私は、特殊なテンプレートクラスのメソッドで使用されるはずの渡された型のメンバーを持つテンプレートクラスを作成しようとしています。このように:C++の特殊なテンプレートクラスのテンプレートクラスメンバーフィールドにアクセスするにはどうすればよいですか?
template <class T>
class MyTemplateClass
{
public:
MyTemplateClass() {}
void DoSomething()
{
DoSomethingWithMember();
}
void DoSomethingWithMember() {}
protected:
T m_member;
};
template<>
class MyTemplateClass<float>
{
public:
void DoSomethingWithMember()
{
printf("Member is %f", m_member);
}
};
私のような呼び出し行うことができるよう:
MyTemplateClass<float> obj2 = MyTemplateClass<float>();
obj2.DoSomething();
特化したテンプレートクラスがコンパイルされませんが、エラーを与える:
"Use of undeclared identifier
m_member
".
はのための方法はあります特別なテンプレートクラスを使用して、新しい特別なタイプのコードを複製することなく元のクラスメンバーにアクセスできますか?それとも私がここでやろうとしていることを達成するための他の方法?
は、仮想関数をオーバーライドと同じではありません、あなたが「ドン1つの部分を置き換え、残りのクラスをプライマリテンプレートから「継承」します。クラステンプレートの特殊化は完全なクラスでなければならないので、 'm_member'というメンバを使用する場合は' m_member'というメンバが必要です。 –