テンプレートMyDatabase
クラスと2つの派生クラスDatabase_A
とDatabase_B
があります。私は別のクラスC
を持っていて、それはDatabase_A
とDatabase_B
を使っています。したがって、クラスC
に両方の派生クラス(Database_A
とDatabase_B
)のヘッダーを含めるときは、このエラー "Redefinition of MyDatabase
"が表示されます。私の推測は、両方の派生クラス(Database_A
とDatabase_B
)がテンプレートクラスMyDatabase
をドラッグしているため、MyDatabase
の再定義の理由になる可能性があります。しかし、私はこの問題を解決する方法を知らない。テンプレートクラスと派生クラス
マイコード:
template <typename U, class T> class My_DataBase {
protected:
std::map<U,T> Container
public:
void add();
T* getNameToPointer(string key);
};
class Database_A: public My_Database <string,A> {
add();
A* getNameToPointer(name);
};
class Database_B: public My_DataBase <string,B> {
add();
B* getNameToPointer(name);
};
class C {
private:
Database_A Db_A; // drage template class on back_end
Database_B Db_B; // drage template class on back_end
};
どのように私はこの問題を解決することができますか?
は私たちに、完全な最小限の例を表示します。これはCではない、これはC++です。 – gsamaras
簡単な説明は、私はテンプレートクラスAと2つの派生クラスBとCを持っている今、私はクラスBとCの両方を使用している別のクラスDを持っているので、私はB&私はクラスAの再定義のエラー。だからこの問題を避けるには? –
あなたの質問をヘッダーファイルで更新してくださいありがとうございます。 – gsamaras