Nm. Jag löste det med en dynamic_cast-fulfix
Frågan#1
Hej alla C++-wizards!
Jag har ett litet problem med en parser som är skriven i C++ som jag håller på att modifiera. Datastrukturerna till parsern innehåller bl.a. klasser som ser ut som följer:
(BaseTable)
^
|
(KTable< TableItem >)
Dvs. KTable ärver från BaseTable.
Problemet är att jag har en klass (ParseTree) som bl.a. innehåller en mapp (TableMap) med BaseTable-pekare som egentligen är nercastade KTable<>-klasser. Jag försöker få till en funktion som kopierar ParseTree-objekt. Jag har provat:
for (TableMap::const_iterator iter = source.tables.begin(); iter != source.tables.end(); ++iter)
target.tables[iter->first] = new BaseTable(*iter->second);
Men det funkar inte. Det funkar ju att göra såhär:
for (TableMap::const_iterator iter = source.tables.begin(); iter != source.tables.end(); ++iter)
target.tables[iter->first] = iter->second;
...men då kopieras ju inte tabellerna, utan bara pekarna.
Nån som har något bra tips?