---
title: "Problem med att göra kopior av nercastade objekt"
type: "forum-thread"
url: "https://www.webforum.nu/amne/c-cpp/150210-problem-med-att-göra-kopior-av-nercastade-objekt"
topic: "C/C++"
topic_url: "https://www.webforum.nu/amne/c-cpp"
author: "svampträsk"
published: "2006-08-16T15:15:18.000Z"
updated: "2006-08-17T09:30:35.000Z"
replies: 1
views: 339
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/c-cpp/150210-problem-med-att-göra-kopior-av-nercastade-objekt"
---

# Problem med att göra kopior av nercastade objekt

## #1 — svampträsk, 2006-08-16T15:15Z

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?

Permalänk: https://www.webforum.nu/p/150210

## #2 — svampträsk, 2006-08-17T09:30Z

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

Permalänk: https://www.webforum.nu/p/1853154

---

Tråden på webben: https://www.webforum.nu/amne/c-cpp/150210-problem-med-att-göra-kopior-av-nercastade-objekt
