c++ - 模板函数中的通用模板参数

标签 c++ function class templates pointers

我有一个模板类,它有一个 -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指针以便我可以将它用于任何其他类型?

最佳答案

使用符号 FooFoo 的定义中本身相当于说 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/

相关文章:

javascript - 类型错误:mitsukuApi.send 不是函数

ios - Swift 中的事件指示器

c# - 如何覆盖从构造函数调用的基类方法

c++ - 无法使用比较器初始化 std::function

c++ - 获取被删除文件名的API

c++ - 来自 Win32 的 Cortana

javascript - 如何分离两个 jQuery 函数

java - 如何在android中创建一个全局变量?

c++ - 类中的析构函数

C++ - 在 Visual Studio 2010 的属性表中使用环境变量