将结构声明为类成员的问题~~ 我把一个结构体声明类的一个public成员,然后在类的初始化函数中用此结构声明一个变量,调试运行的时候报错说该结构体没有可用的默认构造函数,这是怎么回事? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果你的结构有构造函数,而构造函数又有非缺省的参数列表,就会这样对于这样的结构,你必须用初始化列表来初始化他如struct myStruct{ int a; myStruct{ int a_}{a=a_;};};class MyClass{myStruct s; public: MyClass(int p):s(p){}; //<--注意这样的,C++教材一定说过}; 我的结构体是这样写的:public: struct DATAINFO { int ID; int InfoType; CString InfoID; };};这样声明变量的 DATAINFO *pDataInfo=new DATAINFO; 我这样改正之后我之前发生的问题就没了:public: struct DATAINFO { int ID; int InfoType; CString InfoID;DATAINFO(){ ID=0; InfoType=0; InfoID="";} };而你们都说之前的代码没有问题,这是为何? 我将你的结构放在我的程序里面,调试通过。其实,你的写法是MFC中许多类(如CPtrList等)的常用手法。结构不需要构造函数的,不明白你怎么会有这样的结果。 如何创建一个托盘,像qq那样有消息的时候闪动 VC6如何实现静态编译 基础问题 #if !defined(...)和pragma once重复了么?! TCP实现停等协议的简单问题。 加入头文件还是undeclared 是为什么? DoModal出来的窗口,焦点怎么会回到父窗口上去了?好奇怪啊! 文件名获取失败后,怎么关闭程序? 如何使视频作左右镜像翻转 高分救命:哪位大哥帮我写下线段与正方体的求交算法啊!! 如何求两条相交曲线的坐标? 求助 MFC按钮 如何做一个按钮 只关闭当前窗口 而不关闭主窗口 CSocket 非阻塞
对于这样的结构,你必须用初始化列表来初始化他如
struct myStruct{
int a;
myStruct{ int a_}{a=a_;};
};class MyClass{
myStruct s;
public:
MyClass(int p):s(p){}; //<--注意这样的,C++教材一定说过};
public: struct DATAINFO
{
int ID;
int InfoType;
CString InfoID;
};
};
这样声明变量的
DATAINFO *pDataInfo=new DATAINFO;
public:
struct DATAINFO
{
int ID;
int InfoType;
CString InfoID;
DATAINFO()
{
ID=0;
InfoType=0;
InfoID="";
}
};而你们都说之前的代码没有问题,这是为何?
其实,你的写法是MFC中许多类(如CPtrList等)的常用手法。
结构不需要构造函数的,不明白你怎么会有这样的结果。