質問

ただ、迅速かつ簡単な質問をしますが、ドキュメントでそれを見つけることができませんでした。

template <class T>
T* Some_Class<T>::Some_Static_Variable = NULL;

これは、G ++でコンパイルが、私は、これは有効な使用であるかどうかわからないです。それはありますか?

役に立ちましたか?

解決

はい、このコードは正しいです。詳細については、このC ++テンプレートのチュートリアルを参照してください。

のhttp:// WWW。 is.pku.edu.cn/~qzy/cpp/vc-stl/templates.htm#T14する

他のヒント

これは、有効なC ++ですが、それはテンプレート代入演算子とは何の関係もありません!スニペットはSomeClass<T>の静的メンバを定義しNULLにその初期値を設定します。これは、限り、あなたは一度だけそうでなければ、恐ろしいOne Definition Ruleを踏むそれがそうであるように細かいです。

テンプレート代入演算子は何かのようです。

class AClass {
public:
    template <typename T>
    AClass& operator=(T val) {
        std::ostringstream oss;
        oss << val;
        m_value = oss.str();
        return *this;
    }
    std::string const& str() const { return m_value; }
private:
    std::string m_value;
};

std::ostream& operator<<(std::ostream& os, AClass const& obj) {
    os << obj.str();
    return os;
}

int main() {
    AClass anObject;
    anObject = 42;
    std::cout << anObject << std::endl;
    anObject = "hello world";
    std::cout << anObject << std::endl;
    return 0;
}

テンプレート代入演算子はの変種様のクラスを実装する際の変換を提供するために最も有用です。あなたががこれらの生き物を使用しようとしている場合は、考慮すべき注意点の束があります。 Googleの検索には、問題の例を上げます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top