MyDatabase
클래스와 파생 클래스 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
};
가 어떻게이 문제를 해결할 수 있습니까?
우리에게 완전한 최소한의 예를 보여
My_DataBase.h : 그래서 여기
은 예입니다. 그리고 이것은 C가 아닙니다, 이것은 C++입니다. – gsamaras간단한 설명은 템플릿 클래스 A와 2 개의 파생 클래스 B와 C가 있습니다. 이제는 클래스 B와 C를 모두 사용하는 또 다른 클래스 D가 생겼습니다. D에서 B & C의 헤더 파일을 포함 할 때마다 나 클래스 A의 재정의 오류. 그래서이 문제를 피하는 방법 ??? –
헤더 파일로 질문을 업데이트 해주셔서 감사합니다. – gsamaras