sus*_*att 1 c++ enums naming scope class
假设我有一个沿着以下行的MessageBox类:
class MyMessageBox
{
public:
enum Priority {
Prior_Dialog,
Prior_Warning,
// ...
};
enum Icon {
Icon_Question,
Icon_Exclamation,
// ...
};
enum Button {
Button_Yes,
Button_No,
Button_Cancel,
// ...
};
static void Show(Priority pPriority, Icon pIcon, Button pButton1, Button pButton2);
// ...
};
Run Code Online (Sandbox Code Playgroud)
现在,如果我想抛出一个消息框,我必须输入MyMessageBox::每个标识符:
MyMessageBox::Show(MyMessageBox::Prior_Dialog, MyMessageBox::Icon_Question, MyMessageBox::Button_Yes, MyMessageBox::Button_No);
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想要一些非宏解决方案,允许源文件#include "MyMessageBox.h"在MyMessageBox::任何地方省略资格.这可能吗?
是的,非常简单.如果你不想在enum类中使用s,那么......不要在类中定义它们.
enum Priority {
Prior_Dialog,
Prior_Warning,
// ...
};
enum Icon {
Icon_Question,
Icon_Exclamation,
// ...
};
enum Button {
Button_Yes,
Button_No,
Button_Cancel,
// ...
};
class MyMessageBox
{
public:
static void Show(Priority pPriority, Icon pIcon, Button pButton1, Button pButton2);
// ...
};
Run Code Online (Sandbox Code Playgroud)