0

以下のコードを見つけてください。

#include <iostream>
using namespace std;
template<typename T>
class A
{
    static A* self;
};

template<typename T>
A* A<T>::self = NULL;
int main()
{
    return 0;
}

静的ポインターの初期化中にコンパイルの問題に直面しています。非常に多くのリンクが同じ方法(私が初期化した方法)を言っていますが、それでも問題は解決しません。以下はコンパイルエラーです。

"expected constructor, destructor, or type conversion before '*' token"
4

2 に答える 2

2

Aはクラス テンプレートであるため、テンプレートへのポインターを定義するときにテンプレート パラメーターを指定する必要があります。

それ以外の:

template<typename T>
A* A<T>::self = NULL;

そのはず:

template<typename T>
A<T>* A<T>::self = NULL;

クラス本体内ではテンプレート引数の指定は任意なのでA*そこに書いても と同じように扱われA<T> *ます。

于 2013-10-08T16:48:27.807 に答える
0

試す:

template<typename T> A<T>* A<T>::self = NULL;

于 2013-10-08T16:49:17.173 に答える