0
class cippa{};

enum close{ cippa };

int main(){
    new cippa();    //bad here
}

使用::cippa也无济于事。有没有办法解决这个问题而无需将enumclass单独放置namespace

4

2 回答 2

4

使用 消除歧义new class cippa。如果类名和枚举数(或函数/变量)名在同一范围内声明,则类名是隐藏的。您可以通过 访问它class name。如果类型名称是枚举名称,则相同。你可以通过enum name

#include <unistd.h>

// oops, close is now hidden! but we know a trick..
enum close c = cippa;
于 2012-11-27T20:32:38.483 回答
1

使用 C++11,如果你这样做了

class cippa;
enum class close { cippa };

那么类cippa和枚举值close::cippa不会发生冲突。

顺便说一句,这基本上是在做

class close{
public:
  enum enum_t{cippa};
};

但是,close您需要使用close::enum_t来访问枚举类型,而不是。 close::cippa保持不变。

于 2012-11-27T21:44:27.367 回答