【发布时间】:2015-11-01 02:24:42
【问题描述】:
标准说, “如果成员是静态数据成员、成员函数、成员类型、成员模板、无作用域枚举的枚举器、成员匿名联合的成员,则类 T 的成员不能使用 T 作为其名称。但是,只要没有用户声明的构造函数,非静态数据成员就可以使用名称 T。”
但是,如果我创建此类,则会出现编译错误。
class G
{
int G;
};
我正在使用 VS2013。微软不允许吗?
【问题讨论】:
-
什么是编译错误?这适用于 Clang 和 GCC。
-
微软编译器因不符合任何标准而(臭名昭著)。
-
error: C2380: type(s) before 'G' (constructor with return type, or invalid redefinition of current class-name?) 所以,他们不允许这样做:(
-
我强烈建议以不同的方式命名类和成员。我从来没有遇到过这个问题,因为我的名字不同。
-
@ThomasMatthews 当然我也从未在实践中使用过。
标签: c++ class visual-c++ member classname