テンプレート代入演算子:有効なC ++?
-
21-08-2019 - |
質問
ただ、迅速かつ簡単な質問をしますが、ドキュメントでそれを見つけることができませんでした。
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の検索には、問題の例を上げます。
所属していません StackOverflow