当我在自建的COneAxis类中声明:COneAxis message[40],怎么会出现这个错误?error C2512: 'COneAxis' : no appropriate default constructor available
解决方案 »
- VPN网络socket连接问题
- InstallShield生成的SETUP.EXE安装繁体中文之后,再卸载时,修复/移除界面出现乱码???
- 如何获取对话框中第二个edit框???
- XP下为何不能把系统DLL拷出来再使用?
- VC中如何备份及还原,附加,分离SQL数据库
- 请教高手,,每个线程都有自已的消息队列..一个进程由多个线程同时运行,若发送消息,,window 是如何处该该消息的......
- 请问CFrameWnd里哪个函数和CDialog里的OnInitDialog?
- VC 安装问题请求解答
- TrackPopupMenuEx 怎么在窗口以外的位置,弹出一个菜单呀?(急寻)(100)
- 低手求助.
- 做过TTS程序的请进
- 怎么样调用主工程文件中的函数?
就是没有默认构造函数了。 生成的对象数组的话,该类必须有默认构造函数。 要不你就用指针一个一个的NEW吧。
{
private:
char* pCh;
};int main(int argc, char* argv[])
{
B b[20]; b[0].pCh = new char[20];
return 0;
}
编译通过!
private ==> public
你的B类是有默认构造函数的.改成以下才是没有默认构造函数
class B
{
pubblic:
char* pCh;
B(char* str){ pch=new char[100];printf(pCh,str);}
};再用你的main()就是出错了.
class B
{
pubblic:
char* pCh;
B(char* str){ pch=new char[100];printf(pCh,str);}
};如果用
void main()
{
B array[3];
}
则会出错.但是可以使用
void main()
{
B array[3]={B("first"),B("second"),B("third")};
}不过在本例情况下由于没有提供copy constructor,是极易出RUN-TIME错误的.
你举的这个例子和楼主的问题可以说是差不多,
"
如果用
void main()
{
B array[3];
}
则会出错.
"错的原因是因为B没有缺省构造函数(B array[3];这里会调用缺省构造函数),因为你定义了一个带参数的构造函数,所以编译器不会再为B生成一个无参数的缺省构造函数。如果你加上一个就不会出错了。关于构造函数你可以看看《深度探索c++对象模型》