具有类名的数据成员

时间:2015-08-08 20:10:16

标签: c++ class visual-c++ member classname

标准说, “如果成员是静态数据成员,成员函数,成员类型,成员模板,未作用域枚举的枚举器,成员匿名联合的成员,则T类的成员不能使用T作为其名称。 ,只要没有用户声明的构造函数,非静态数据成员就可以使用名称T.“

但是,如果我创建此类,则会产生编译错误。

class G
{
    int G;
};

我正在使用VS2013。是不允许在Microsoft或?

1 个答案:

答案 0 :(得分:3)

如果VC ++不允许这样做,那就是一个错误。

但是,这种语言“功能”是出于C兼容性的目的,并且Microsoft决定不强调C.例如,C99功能在C ++采用之前通常不可用。你永远不应故意在C ++中声明这样的成员。

(默认情况下只允许在C中使用:成员命名没有限制,所有成员都是非静态数据成员。)