일부 C++/CLI 코드를 작성하는 데 특이한 오류가 발생했습니다. 일부 데이터를 보유하는 클래스의 복사본을 만들려고합니다. 나는 시도하고 다음과 같이 클래스의 사용을 만들 때적절한 기본 생성자를 사용할 수 없습니까?
public ref class RawDataPacket
{
protected:
float* m_internalData;
public:
RawDataPacket(const float* newInternalData);
RawDataPacket(const RawDataPacket^ rdp);
RawDataPacket(RawDataPacket^ rdp);
RawDataPacket();
};
:
void SomeClass::SomeFunction(RawDataPacket^ rdp)
{
// Send a copy of the packet to anyone interested.
RawDataPacket^ rdp1 = gcnew RawDataPacket(rdp);
ForwardData(rdp1);
}
를 내가 얻을 : 같은
클래스는 정의
error C2512: 'RawDataPacket' : no appropriate default constructor available
내가 생각 RawDataPacket();
그게 덮여 있었나요? .. 나는 거기에서 정말로 명백한 무엇인가 놓치고있다?
[편집]이 RawDataPacket()
의 본문은 다음과 같습니다
RawDataPacket::RawDataPacket()
{
m_internalData = nullptr;
}
가 [Edit2가] 전체 컴파일러의 출력은 다음과 같습니다
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 ==========
RawDataPacket()의 본문을 종료합니까? –
그것은 "적절한 기본 컨스트럭터"가되어야하는 것처럼 보입니다. 그러나 그것은 당신이 당시 사용하고있는 생성자가 아닙니다. Step-Into를 할 때, 그것은 당신의 컨스트럭터 중 하나에 들어가고 그런 다음 그 에러를 던집니다? 또는 그냥 SomeClass :: SomeFunction 함수 줄에 해당 오류를 던질합니까? – Jrud