class cippa{};

enum close{ cippa };

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


使用::cippa也无济于事。有没有一种方法可以解决这个问题,而不必将enumclass放在单独的namespace中?

最佳答案

使用new class cippa消除歧义。如果在同一作用域中声明了类名和枚举器(或函数/变量)名,则该类名将被隐藏。您可以通过class name访问它。如果类型名称是枚举名称,则相同。您可以通过enum name进行访问

#include <unistd.h>

// oops, close is now hidden! but we know a trick..
enum close c = cippa;

关于c++ - 类名和枚举值之间的冲突:没有 namespace 就可以解决?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13592504/

10-09 03:54