【发布时间】:2016-07-15 10:26:20
【问题描述】:
没有关于良好风格的争论,我只是对标准 c++ 中的合法内容感兴趣。这是在更大的代码中出现的一个小例子。
Clang 和 Visual Studio 编译它没有错误,它似乎工作得很好。我什至都没有收到任何警告。
GCC 给出以下错误,甚至拒绝编译代码...
test.cpp:1:8: 错误:从 'struct test' 改变 'test' 的含义 [-fpermissive]
这是否合法? 我明白 gcc 的意思,但是这段代码真的有错误吗?
struct test
{
int data;
};
struct app
{
test test;
};
int main()
{
app myapp;
myapp.test.data = 123;
}
【问题讨论】:
-
数据成员和变量没有区别。
-
@Cheersandhth.-Alf:当然有。
-
@LightnessRacesinOrbit:不。
-
gcc 不会抱怨声明这样的变量:- “test test;”虽然主要......
-
@Cheersandhth.-Alf:数据成员和非成员变量有很多不同之处。您可以选择任何好的 C++ 书籍来了解更多关于类的信息。
标签: c++