webForumDet fria alternativet

Kopieringskonstruktorn

C/C++

2 svar · 451 visningar · startad av Alpha II

Medlem sedan maj 20002 993 inlägg
Frågan#1

Jag har skapat en klass som jag kallar ScriptObject. ScriptObject innehåller en void pekare som håller ett objects data. D.v.s den skapar dynamiskt en float, integer, string eller något annat beroende på vad ScriptObject är för något. ScriptObject är också basklass till de klassers i programmet som skall kunna nås via script.

Eftersom datan som void pekaren pekar till skapas dynamiskt
måste jag ju definiera min egna kopieringskonstruktor. Det är här jag får problem. Efter att jag definierat min konstruktor som

ScriptObject(ScriptObject&)

får jag följande kompileringsfel

[...]\include\utility(34): error C2558: class 'ScriptObject' : no copy constructor available or copy constructor is declared 'explicit'

Jag använder ett flertal STL maps för att hålla koll på mina ScriptObject och det är också i STL filerna (utility) felet uppstår.

Hur fixar jag upp detta nu då? Kommenterar jag bort kopieringskonstruktorn kompilerar programmet men det blir lite andra småskumma saker då... :P

Medlem sedan maj 20018 027 inlägg
#2

Har du prövat att definiera copy constructorn som:

ScriptObject(const ScriptObject &[b]ScrObj[/b])
Medlem sedan maj 20002 993 inlägg
#3

const! Det var klantigt att glömma :r

246 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
116 ms — deklarationer (db)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)