1

Aという名前のクラスがあるとします

template<class T>
class A
{
protected:
    static T* obj;

    A() {}
    ~A() {}

public:
    // methods...
};


// Somewhere in my source file...
template <class T> A <T*> ::obj = NULL;

さまざまな理由で、静的メンバーobjを宣言する必要がありますが、gccは、クラスの定義中にそれらが初期化されることを好みません(Visual Studioでそれを行うことができるようです)

とにかく、どうすればobjを正しく宣言できますか?

4

1 に答える 1

2

そのようなオブジェクトを部分的に特殊化することはできません。代わりに、これを実行してください。

template <class T> T * A<T>::obj = NULL;

これがクラステンプレート定義と一緒にヘッダーファイルに含まれていることを確認してください。

于 2013-02-21T00:23:28.940 に答える