2012-12-12 47 views
21

我想知道是否可以轉發聲明在另一個類作用域內定義的枚舉。例如,考慮以下因素:C++正向聲明類作用域枚舉

//A.h 
class A 
{ 
public: 
    enum class type: unsigned long { /*some stuff*/ } 
}; 

現在,另一頭我想轉發申報「類型」枚舉(假設B類下面有做一些事情與A ::類型的函數)

//B.h 
enum A::type; //use of undefined type 'A' 

class B 
{ 
public: 
    UseTypeEnum(A::Type&); 
}; 

這不起作用或者:

//B.h 
class A; 
enum A::type; //still use of undefined type 

class B... 

還有如果枚舉在阿全球範圍內聲明沒問題

有沒有辦法做到這一點?

+2

枚舉應聲明爲靜態成員,你確定你不能寫程序而忽略枚舉前向聲明嗎? 'enum'的 –

+0

:http://stackoverflow.com/questions/2238170/forward-declaration-of-nested-enum –

回答

15

您不能在類定義之外聲明嵌套類型。

如果您需要在類的外部使用它們,您必須包含類定義,或將它們移動到名稱空間中。

+2

不幸的是,它是關於外部庫的時候。 – Predelnik