2011-11-08 44 views
0

我想將一個名稱空間別名(即名稱空間A = B :: C)放在頭文件中,這樣我就可以在源文件中使用它,但編譯器只是告訴我它的「不是名稱空間名稱」。有什麼想法嗎?如何在頭文件中聲明名稱空間別名,然後在源文件中使用它?

這是我想要做一個非常簡化axample ...

頭文件:

namespace A{ 
namespace B{ 
int getInt(); 
} 
} 

namespace AB = A::B; 

source file: 

#include "header_file.h" 
#include <iostream> 

int AB::getInt(){ // Error "AB is not a namespace name" 
return 123; 
} 
+1

我想有一個在你的代碼中的錯誤。 (提示:帖子來代碼) – avakar

+0

[This](http://www.ideone.com/4IqxN)可能會有所幫助。 –

+0

它的方式太大了。 header:namespace a {int a};命名空間b = a; source:int a = b :: a; //錯誤? – user965369

回答

2

您需要包括一個聲明在頭文件或命名空間中的文件正如評論說的那樣:

namespace B { namespace C { } } 
namespace A = B::C; 
+1

或在別名定義 –

+0

之前聲明空名稱空間,或者只是重新聲明名稱空間而不是包含。 – justin

+0

命名空間跨越多個文件,我有。 – user965369

1

在創建別名的時候,編譯器必須已經看到了別名名稱空間。

因此,你必須#include文件包含其命名空間,或者你必須這樣做:

// "Forward Declaring" the namespace 
namespace B { namespace C { } } 

namespace A = B::C; 
+0

我已經完成了所有這些問題,別名的範圍沒有傳入源文件。 – user965369

+0

您是否嘗試過在您的.cpp文件上運行預處理器並查看是否有奇怪的事情發生?也許你有'#include'嵌套在命名空間中? –

+0

耶所做的一切。你知道我在哪裏可以找到有關命名空間別名文件範圍的信息嗎?謝謝 – user965369

相關問題