Hallo zusammen,
ich habe bei einem Projekt ein kleines Problem und hoffe dass ihr mir weiter helfen könnt.
Ich möchte eine Instanz klonen, die auch dauerhaft existiert. Dazu habe ich mir einen KopierKonstruktor gebaut.
Allerdings bekomme ich folgende Fehlermeldung, beim Aufruf des Kopierkonstruktors:
error C2064: Ausdruck ergibt keine Funktion, die 1 Argumente übernimmt
Wenn ich nun die geklonte Instanz lokal erzeuge tritt der Fehler nicht mehr auf, und funktioniert auch einwandfrei.
Die Instanz muss nun aber global sein. Kann mir jemand sagen, wie ich das hinkriege?
Hier ein kleines Beispiel, wie ich das meine:
Hierbei möchte ich ein Objekt von Klasse A in Klasse B erzeugen und dort das Klon erzeugen.
#pragma once
class A
{
public:
//Konstruktor
A(void);
//Kopierkonstruktor
A(const A& other);
~A(void);
void setlaenge(int l);
void setbreite(int b);
private:
int laenge;
int breite;
};
#include "StdAfx.h"
#include "A.h"
A::A(void)
{
laenge = 5;
breite = 7;
}
A::A(const A& other)
{
//int laenge = new int();
//int breite = new int();
this->laenge = other.laenge;
this->breite = other.breite;
}
A::~A(void)
{
}
void A::setlaenge(int l)
{
laenge = l;
}
void A::setbreite(int b)
{
breite = b;
}
#pragma once
#include "A.h"
class B
{
public:
B(void);
~B(void);
void KopierDas(void);
private:
A* m_A;
A Kopie;
};
#include "StdAfx.h"
#include "B.h"
B::B(void)
{
this->m_A = new A();
}
B::~B(void)
{
}
void B::KopierDas(void)
{
Kopie(*m_A);
Kopie.setlaenge(1);
Kopie.setbreite(2);
}