在C++中,子類或朋友函數如何訪問所有可能的父類模板類型?我如何修改下面的代碼,以便無論類型T
是什麼,朋友函數和子函數都不會遇到類型錯誤? (目前只有int的類型正常工作)。C++如何將模板應用於模板類的子/朋友?
// PARENT CLASS:¨
template <class T>
class parent{
public:
T variable1;
friend int function1(parent, int a);
};
//CHILD CLASS:
class child : public parent<int> {
public:
void setvariable(int a){ variable1 = a; };
};
// FRIEND FUNCTION:
int function1(parent<int> k, int a) {
return k.variable1 +a;
};
所以,下面再就沒有錯誤編譯:
int main() {
child child1; //Child
child child2;
child1.setvariable(4);
child2.setvariable(4.4); //Type error/retyping
cout << function1(child1.variable1, 4) << endl; // Function
cout << function1(child2.variable1, 4.0) << endl; // Type error
system("pause");
return 1;
}
的[聲明模板類的模板友元函數]可能的複製(https://stackoverflow.com/questions/18792565/declare-template-friend-function-of-template-class) – AndyG
你能顯示的代碼示例你想擁有?例如,函數1的定義?對我而言,你不清楚你要求什麼。 – Jonas
@Jonas函數的定義在第二行到最後一行;)。 – Tony