没有合适的默认构造函数可用?

问题描述:

我有写一些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 ========== 
+0

RawDataPacket()的正文退出? – 2009-12-15 14:39:22

+0

它看起来好像应该是一个“合适的默认构造函数”......但是,那不是您当时使用的构造函数。当你做一个步入式,它会进入你的contstructors之一,然后抛出该错误?或者只是在SomeClass :: SomeFunction函数的行中抛出该错误? – Jrud 2009-12-15 14:41:52

明白了!我想到我曾经在Controller类的头文件中声明了RawDataPacket类。

我试着在那里包括标题,并删除前向声明,它的工作。所以事实证明,尽管前进宣布我忘记了在Controller.cpp中包含头文件的类

这可能是一个讨厌的人找到..所有帮助的欢呼声!

如果您有构造函数的参数,请在构造函数之前使用explicit。