webForumDet fria alternativet

Problem med att göra kopior av nercastade objekt

C/C++

1 svar · 326 visningar · startad av svampträsk

Medlem sedan juni 200070 inlägg
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?

Medlem sedan juni 200070 inlägg
#2

Nm. Jag löste det med en dynamic_cast-fulfix

262 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)