我有一个模板类,它有一个 -template- 函数,它采用与第一个参数相同的类的指针,例如:
template<class T>
class Foo{
void f(Foo* foo){}
}
当我在我的主函数中使用它时,一切似乎都正常工作,直到我为参数使用不同的模板。
int main(){
Foo<double> f1;
Foo<double> f2;
f1.f(&f2); //No errors;
Foo<bool> f3;
f1.f(&f3);//Error : No matching function to call to Foo<double>::f(Foo<bool>*&)
}
显然,这里定义的唯一函数是Foo<T>::f(Foo<T>*)
。
有什么方法可以定义 f
采用“通用”模板Foo
指针以便我可以将它用于任何其他类型?
最佳答案
使用符号 Foo
在 Foo
的定义中本身相当于说 Foo<T>
.如果您想支持 Foo
的任何其他实例化, 使 f
一个模板函数:
template <class T>
class Foo {
template <class U>
void f(Foo<U>* foo) { }
};
关于c++ - 模板函数中的通用模板参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47889825/