假设我有大意如下一个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);
// ...
};
现在,如果我想扔了一个消息,我必须为每一个标识符类型进行MyMessageBox::
:
MyMessageBox::Show(MyMessageBox::Prior_Dialog, MyMessageBox::Icon_Question, MyMessageBox::Button_Yes, MyMessageBox::Button_No);
理想,我想要一些非宏解决方案,它允许源文件#include "MyMessageBox.h"
省去各地的MyMessageBox::
资格。这可能吗?
后续问题:我知道在头文件中放置'using'声明是一个很大的禁忌,但在这种情况下,将'使用MessageBoxUtils'直接放入'MyMessageBox.h'是可以接受的,这样它会自动出现在每个使用它的源文件中? – suszterpatt 2012-08-14 19:17:17
@suszterpatt,'在**头文件中使用namespace'语句**是一种难闻的气味,但它在实现(cpp)文件中很好。见http://stackoverflow.com/questions/4872373/why-is-including-using-namespace-into-a-header-file-a-bad-idea-in-c – 2012-08-14 19:29:26