2
为什么在这个代码中的错误:模板成员函数只实例化
template <typename T>
class CLs{
public:
void print(T* p){ p->print(); }
};
void main() {
CLs<int> c1; // compilation OK
CLs<double> c2; // compilation OK
double d=3;
c2.print(&d);
}
我讲师说,在c2.print(&d);
行错误:
Compilation Error: Member function is instantiated only if called.
是什么他的意思是?
变量'd'是'double'类型的,所以当你在函数体中调用'c2.print(&d)'就像调用'd.print()',但d是一个具体类型,并且不会'没有成员函数'print'。 – 101010