Kein geeigneter Standardkonstruktor verfügbar?
Hab ich einen eigenartigen Fehler beim schreiben auf C++/CLI code. Ich versuche eine Kopie zu machen von einer Klasse, die einige Daten enthält.
Die Klasse definiert ist als:
public ref class RawDataPacket
{
protected:
float* m_internalData;
public:
RawDataPacket(const float* newInternalData);
RawDataPacket(const RawDataPacket^ rdp);
RawDataPacket(RawDataPacket^ rdp);
RawDataPacket();
};
Wenn ich versuchen und verwenden Sie die Klasse wie folgt:
void SomeClass::SomeFunction( RawDataPacket^ rdp )
{
//Send a copy of the packet to anyone interested.
RawDataPacket^ rdp1 = gcnew RawDataPacket( rdp );
ForwardData( rdp1 );
}
Bekomme ich:
error C2512: 'RawDataPacket' : no appropriate default constructor available
Dachte ich, dass RawDataPacket();
hatte, dass Sie gedeckt? ..oder bin ich etwas fehlt offensichtlich wirklich dort?
[Bearbeiten] Der Körper RawDataPacket()
sieht wie folgt aus:
RawDataPacket::RawDataPacket()
{
m_internalData = nullptr;
}
[Edit2] Die full compiler output sieht wie folgt aus:
1>------ Build started: Project: MySoftware, Configuration: Debug Win32 ------
1>Compiling...
1>RawDataPacket.cpp
1>Controller.cpp
1>.\Controller.cpp(452) : error C2512: 'MySoftware::RawDataPacket' : no appropriate default constructor available
1>Build log was saved at "file://c:\Projects\Experiments\MySoftware\Debug\BuildLog.htm"
1>MySoftware - 1 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 1 up-to-date, 0 skipped ==========
ist der Körper von RawDataPacket() beenden?
Es sieht für mich so, als wenn, dass sollte eine "angemessene Standard-Konstruktor"... Aber das ist nicht der Konstruktor, die Sie mit in die Zeit. Wenn Sie eine Step-In, geht es dann in eine Ihrer contstructors und werfen Sie dann der Fehler? oder ist es einfach zu werfen, dass die Fehlermeldung auf die Zeile, in der SomeClass::SomeFunction Funktion?
Es sieht für mich so, als wenn, dass sollte eine "angemessene Standard-Konstruktor"... Aber das ist nicht der Konstruktor, die Sie mit in die Zeit. Wenn Sie eine Step-In, geht es dann in eine Ihrer contstructors und werfen Sie dann der Fehler? oder ist es einfach zu werfen, dass die Fehlermeldung auf die Zeile, in der SomeClass::SomeFunction Funktion?
InformationsquelleAutor Jon Cage | 2009-12-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hab! Es fiel mir ein, dass ich vorwärts, erklärte die RawDataPacket Klasse in der Kopfzeile der Controller-Klasse.
Habe ich versucht, einschließlich der header drin und die Beseitigung der forward-Deklaration und es funktionierte. Es stellt sich also heraus, dass trotz forward-Deklaration der Klasse, ich würde vergessen, um den Kopf in Controller.cpp
Hätte einen gemeinen zu finden.. cheers für die Hilfe an alle!
InformationsquelleAutor Jon Cage
explizite, bevor der Konstruktor, wenn Sie die Parameter für den Konstruktor.
InformationsquelleAutor neelu