C++ 类中结构体成员无法赋值

classA{public:structa{intNum;};atest;test.Num=1;//错误提示:此声明没有存储类或类型说明符}在类A中无法直接对结构体a中的... class A
{
public:
struct a
{
int Num;
};
a test;
test.Num = 1;//错误提示:此声明没有存储类或类型说明符

}
在类A中无法直接对结构体a中的成员Num直接赋值,提示错误见上。如果是类的成员或声明函数中,就是对的。为什么?
struct a
{
int Num;
};
a test;
test.Num = 1;

这几行代码我放在函数中间(main函数或者是类的成员函数)就是对的,没有报错。不明白的为什么直接在类中赋值就是错的。有什么讲究么?
展开
 我来答
cayido001
2016-08-26 · TA获得超过172个赞
知道小有建树答主
回答量:210
采纳率:100%
帮助的人:226万
展开全部
这本身就是语法问题,C++11中支持对类成员直接用= 初始化
你如果要对test.num初始化 就应该写在struct a的构造函数中,而不是这样的写法
更多追问追答
追答
说过了 不能在类中对“成员的成员直接等号赋值“
这是语法问题,C++不允许这样

你想赋值,就写在类的构造函数中
追问
但是如果结构体赋值的代码是写在类的成员函数中,上面的语法就提示是对的。这又是为什么呢?有点较真,请见谅
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式