Winnetou11
Grünschnabel
Code:
in RawImage.h
RawImage(const RawImage& source); // der Kopierkonstruktor
RawImage& operator=(const RawImage& source); // der Zuweisungsoperator
in RawImage.cpp
RawImage::RawImage(const RawImage& source)
{
//copyFrom(source);
//DebugF("RawImage(const RawImage& source) source.m_fileName = %s\n",source.m_fileName.c_str());
}
RawImage& RawImage::operator=(const RawImage& source)
{
std::string filename = source.getFileName();
DebugF("RawImage::operator=(const RawImage& source) source.m_fileName = %s\n",filename.c_str());
copyFrom(source);
return *this; // als Referenz zurückgeben
}
ein Code wie dieser:
RawImage obj1;
RawImage* imageP;
imageP = new RawImage(obj1); // mit Kopierkonstruktor
erzeugt in VisualStudio9 :
Eine Ausnahme (erste Chance) bei 0x7c97d811 in prog.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0xbaadf005
Das Programm startet ganz normal, es bricht nicht ab.
Die Ausgabe steht unten im AusgabeFenster von VS
wenn ich es so mache
imageP = new RawImage();
(*imageP) = obj1; // mit dem Zuweisungsoperator
geht es, wobei das ja nicht Sinn der Sache sein kann
Es ist auch völlig egal, ob im Kopierkonstruktor Code steht oder nicht,
wobei aber das Argument normal übergeben wird und ich es, zB. zur Ausgabe des Dateinamens, benutzen kann.
Weiß vielleicht jemand eine Lösung oder den Grund dafür ?
Mfg
Winnetou11