假設我有大意如下一個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