私はこのコードを持っています:
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
@hiobs:FWIW、宣言をCPPファイルに移動できます。とはいえ、これはハッキングを行うために1回しか行っていません。その場合、これを行う方法を知ることは不可欠です。
—
Thomas Eding 2013
関数本体が必要とする依存関係を定義した後で、関数定義をクラスの外に移動しなければならない場合があります。これは、クラスAがクラスBを使用し、BもAを使用する場合に発生します。その場合は、AおよびBを宣言してから、AおよびBメソッドを定義します。
—
Wheezil