template 에서
// tempover.cpp --- 템플릿 오버로딩
#include <iostream>
template <class T> // 템플릿 A
void ShowArray(T arr[], int n);
template <class T> // 템플릿 B
void ShowArray(T * arr[], int n);
struct debts
{
char name[50];
double amount;
};
template<class T>
void Sumarray(T arr[],int n)
{
using namespace std;
T max;
for(int i=0;i<n;i++)
max+=arr[i];
cout<<max<<endl;
}
template <class T> //왜 여기가 실행부분이 안되는거지?
void Sumarry(T * arr[],int n)
{
using namespace std;
T max;
for(int i=0;i<n;i++)
max+=*arr[i];
cout<<max<<endl;
}
int main(void)
{
using namespace std;
int things[6] = {13, 31, 103, 301, 310, 130};
struct debts mr_E[3] =
{
{"Ima Wolfe", 2400.0},
{"Ura Foxe", 1300.0},
{"Iby Stout", 1800.0}
};
double * pd[3];
// 포인터들을 배열 mr_E에 있는 구조체들의 amount 멤버로 설정한다
for (int i = 0; i < 3; i++)
pd[i] = &mr_E[i].amount;
cout << "Mr. E의 재산 목록:\n";
// things는 int형의 배열이다
ShowArray(things, 6); // 템플릿 A를 사용한다
cout << "Mr. E의 채무 목록:\n";
// pd는 double형을 지시하는 포인터들의 배열이다
ShowArray(pd, 3); // 더 특수화된 템플릿 B를 사용한다
Sumarray(things, 6);
Sumarray(pd,3);
return 0;
}
template <typename T>
void ShowArray(T arr[], int n)
{
using namespace std;
cout << "템플릿 A\n";
for (int i = 0; i < n; i++)
cout << arr[i] << ' ';
cout << endl;
}
template <typename T>
void ShowArray(T * arr[], int n)
{
using namespace std;
cout << "템플릿 B\n";
for (int i = 0; i < n; i++)
cout << *arr[i] << ' ';
cout << endl;
}
위에 코드 보면 분명 보는 템플릿 함수들은 정상적으로 오버로딩 되는데 덧셈하는 템플릿함수들에 대해서는 왜 정상적으로 오버로딩이 안되는거임?
디버거 돌려봄?
아예 컴파일이 안되는건가
T max 초기화요...
T max = 0
이거요 함수이름에 오타있음 ㅡㅡㅋ