私はテンプレートを使ってC++継承の概念を練習しています。私は、この基本クラスを書いた:派生クラスオブジェクトから基本クラスメソッドを呼び出すときにエラーが発生しました。基本クラスと派生クラスの両方がテンプレート化されています
template <typename type1, typename type2>
class baseClass {
private:
type1 member1;
type2 member2;
public:
baseClass() {};
baseClass(type1 member1, type2 member2):member1(member1), member2(member2) {};
type1 get_member1();
type2 get_member2();
~baseClass() {};
};
と派生クラス:
template <typename type1, typename type2, typename type3>
class derivedClass : public baseClass<type1, type2> {
private:
type3 member3;
public:
derivedClass(){};
derivedClass(type1 member1, type2 member2, type3 member3): baseClass<type1, type2>(member1, member2), member3(member3){};
type3 get_member3();
};
そして、私がメイン関数からこの操作をやっている:
int main(int argc, const char * argv[]) {
derivedClass<int, int, int> object(1, 2, 3);
cout << object.get_member1() << endl;
cout << object.get_member1() << " " << object.get_member2() << " " << object.get_member3() << endl;
}
とき、私コンパイラはエラーになります上記のプログラムをコンパイルしてみてください。私はこの問題をオンラインで検索しようとしましたが、具体的な答えは得られませんでした。私はC++のテンプレートが新しく、まだそれらを扱う方法を知らない。私はそれを把握するのを助けてください。ありがとう!
編集:get_member *メソッドの定義:
template <typename type1, typename type2>
type1 baseClass<type1, type2>::get_member1() {
return member1;
}
template <typename type1, typename type2>
type2 baseClass<type1, type2>::get_member2() {
return member2;
}
template <typename type1, typename type2, typename type3>
type3 derivedClass<type1, type2, type3>::get_member3() {
return member3;
}
?リンカー? – P0W
'get_member1()'と 'get_member2()'の定義がありません – P0W
ここに表示されているコードがすべてあなたのものであれば、get _...メソッドの定義がありません。 – Rene