【发布时间】:2012-01-28 05:59:57
【问题描述】:
我有这个代码:
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:FWIW,您可以将声明移动到 CPP 文件中。也就是说,我只这样做了一次来做一些黑客行为。在这种情况下,知道如何做到这一点至关重要。
-
有时必须在定义函数体所需的依赖项之后将函数定义移到类之外。当 A 类使用 B 类而 B 也使用 A 时会发生这种情况。在这种情况下,您声明 A 和 B,然后定义 A 和 B 方法。