함수 오버로드와 함께 템플릿을 사용하는 방법을 배우고 있지만이를 이해할 수는 없습니다. 특히, 나는 같은 이름을 가진 2 개의 함수를 가지고 있으며, 하나는 2 개의 int 매개 변수를 받아 들인다. 나머지 3 개의 int 매개 변수는 받아 들인다. 함수 호출자가 정의해야하는 형식에 대해 각각 이중/삼중 포인터를 반환해야합니다. 다른 말로 :C++ 오버로드 된 함수 및 템플릿
template <typename T>
T** Foo(int p0, int p1){
T** ret = nullptr;
// ... do stuff with ret ...
return ret;
}
template <typename T>
T*** Foo(int p0, int p1, int p2){
T*** ret = nullptr;
// ... do stuff with ret ...
return ret;
}
int _tmain(int argc, _TCHAR* argv[])
{
double** d2 = Foo(1, 2);
double*** d3 = Foo(1, 2, 3);
int** i2 = Foo(1, 2);
int** i3 = Foo(1, 2, 3);
}
I은 D2 및 I2 기대 된 것은 제 푸()을 제함으로써, D3 및 I3로 반환하는 단계; 대신 main()의 각 호출에서 C2780 및 C2783 오류가 발생합니다. 내가 뭘 놓치고 있니?
당신이'T' 그 통화에있을 무엇을 기대 하는가? – TartanLlama
첫 번째 두 번 호출에서 T가 두 배가 될 것이라고 예상합니다. 다른 사람들은 int를 사용합니다. 2 – gcaglion
컴파일러가이를 알기를 어떻게 기대합니까? 컴파일러가 템플릿 매개 변수를 파악하는 데 사용할 수있는 모든 것은 템플릿 함수의 매개 변수입니다. –