class cippa{};
enum close{ cippa };
int main(){
new cippa(); //bad here
}
使用::cippa
也无济于事。有没有办法解决这个问题而无需将enum
或class
单独放置namespace
?
class cippa{};
enum close{ cippa };
int main(){
new cippa(); //bad here
}
使用::cippa
也无济于事。有没有办法解决这个问题而无需将enum
或class
单独放置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++11,如果你这样做了
class cippa;
enum class close { cippa };
那么类cippa
和枚举值close::cippa
不会发生冲突。
顺便说一句,这基本上是在做
class close{
public:
enum enum_t{cippa};
};
但是,close
您需要使用close::enum_t
来访问枚举类型,而不是。
close::cippa
保持不变。