Lassen Sie uns sagen, dass wir Basisklasse TabelleIst es möglich, vererben Template Klasse C++ spezialisiert auf sich
template <typename T>
class Table
{
public:
Table();
virtual ~Table() = default;
private:
// get all column names as list
virtual std::list<std::string> getAllColumnsImpl();
};
und ich will erben Testtable-Klasse und überschreiben Methode getAllColumnsImpl von Basisklasse:
class TestTable :
public Table<TestTable>
{
public:
TestTable();
virtual ~TestTable() = default;
std::string Description;
int Count;
private:
// get all column names as list
std::list<std::string> getAllColumnsImpl() override;
};
Ist es überhaupt möglich?
Zum Beispiel habe ich Linkerfehler wie:
error LNK2019: unresolved external symbol "public: __cdecl Table<class TestTable>::Table<class TestTable>(void)" ([email protected]@@@@[email protected]) referenced in function "public: __cdecl TestTable::TestTable(void)" ([email protected]@[email protected])
Sie können private Memberfunktionen nicht überschreiben, sie müssen "geschützt" sein. –
@Someprogrammerdude - der gleiche Fehler ... – Alexander
@Someprogrammerdude - Jason Lang geben Antwort, das ist genau CRTP - und meine Frage hat Antwort hier https://StackOverflow.com/Questions/4173254/what-is-the-curiously- Wiederholungs-Template-Muster-CRTP - aber ich wusste vorher nicht über CRPT - weil keine Informationen zu finden - möglicherweise kann meine Frage Menschen wie mich helfen ... – Alexander