我正在尝试这样做:
class test{
public:
struct obj{
int _objval;
};
obj inclassobj;
int _val;
test(){}
test(int x):_val(x){}
test(int x, int y): _val(x), inclassobj._objval(y){}
};
它不起作用。除非我像这样将类内结构部分放入构造函数的主体中:
test(int x, int y){
_val = x;
inclassobj._objval = y;
}
这种方式效果很好。然后我发现有人说除非我可以给我的类内对象它自己的构造函数,然后我这样做了,它不起作用:
class test{
public:
struct obj{
int _objval;
obj(){}
obj(int val): _objval(val){}
};
obj inclassobj(6);
};
错误出现在我尝试实例化的行obj
:obj inclassobj(6);
我完全不知道这一点。第一个问题是为什么在这种情况下我不能使用构造函数初始化列表来初始化类内结构?如果原因是我需要给该结构一个构造函数,为什么第二部分也不起作用?
update:: 我意识到我可以使用指针来初始化类内对象,如下所示:
class test{
public:
struct obj{
int _objval;
obj(){}
obj(int val): _objval(val){}
};
obj* inclassobj = new obj(6);
};
但为什么?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句