すばやく簡単な質問ですが、どのドキュメントでも見つけられませんでした。テンプレート代入演算子:有効なC++?
template <class T>
T* Some_Class<T>::Some_Static_Variable = NULL;
これはg ++でコンパイルされますが、これが有効かどうかはわかりません。それは...ですか?
すばやく簡単な質問ですが、どのドキュメントでも見つけられませんでした。テンプレート代入演算子:有効なC++?
template <class T>
T* Some_Class<T>::Some_Static_Variable = NULL;
これはg ++でコンパイルされますが、これが有効かどうかはわかりません。それは...ですか?
はいこのコードは正しいです。 C++有効ですが、それはテンプレート代入演算子とは何の関係もありません詳細は
のために、この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 searchは問題のあるケースを引き起こします。
@ダニエル:また、[cplusplus.com](http://www.cplusplus.com/doc/tutorial/templates/)ではテンプレートについてよく説明しています。 – Lazer