我有以下代码:
template <class T>
class MyClass {
public:
template <class U>
void foo() {
U a;
a.invoke();
}
};
我想要这种形式:
template <class T>
class MyClass {
public:
template <class U>
void foo();
};
template <class T> /* ????? */
void MyClass<T>::foo() {
U a;
a.invoke();
}
我该怎么做?正确的语法是什么?
为什么不只在类decl内包含函数decl(请参见codepad.org/wxaZOMYW)?无论如何,您都无法将函数decl移出标题,所以……
—
hiobs 2011年
@hiobs:FWIW,您可以将声明移到CPP文件中。也就是说,我只做过一次黑客操作。在这种情况下,知道如何执行此操作至关重要。
—
Thomas Eding
有时,在定义函数主体所需的依赖项之后,必须将函数定义移出类。当类A使用类B而B也使用A时,会发生这种情况。在这种情况下,您声明A和B,然后定义A和B方法。
—
Wheezil'1