【发布时间】:2019-12-15 15:05:55
【问题描述】:
您好,我正在尝试制作一个 C++ 类模板并让它也构成一个函数模板。它归结为
template <class T>
class fun{
public:
template<class U, class V> T add(U, V);
private:
T data;};
我已经尝试过多种不同的方式重写 cpp 文件(与上面编写的头文件相反)中的签名。我开始认为你不能将一个类作为模板并且让它也有函数模板。你可以吗?
在 cpp 文件中它看起来像这样,我收到一条错误消息,指出我在 cpp 文件中声明的函数“add”与我在头文件中声明的“add”不兼容。
这是我在 cpp 文件中的函数模板。
template <class T, class U> T fun<T>::add(T a, U b){return a+b;}
【问题讨论】:
-
使用模板时不能有 cpp 文件。全部放在头文件中。
-
@TheQuantumPhysicist 如果您在 cpp 文件中显式实例化您希望支持的版本,您可以(这会消除使用模板的许多好处,但有时会使感觉)。
-
你们太棒了,非常感谢!
-
@TedLyngmo 我知道伙计...我在晚上 12 点写了那条评论,我在想“哦,我必须提到专业吗?也许不是...我想有人读我的评论会知道我在谈论具体的例子“......我错了:-)我经常做这一切模板专业化的事情来解决循环依赖问题。
-
@TheQuantumPhysicist 永远只有一个 :-)
标签: c++ function class templates mixing