2013-07-25 68 views
1

我在類A中有枚舉,而類B中有類A實例作爲成員。 如何使用這個例子不同類中的枚舉訪問

Class A{ 
    enum ab{ 
    a 1, 
    b 2 }; 
} 

在B類我訪問類enumeraion B類我需要得到這個enumeraion

+0

你的代碼根本不編譯,類應該是class,名稱和值之間應該有'='。 – nio

+0

另請參見[在類中聲明枚舉](http://stackoverflow.com/q/2503807/96780)。 –

回答

1
#include <iostream> 
using namespace std; 

class A{ 
    public: 
    enum ab{ 
    a= 1, 
    b= 2 }; 
}; 

class B{ 
    public: 
    void test() 
    { 
     enum A::ab x=A::a; 
     cout << "test A::a = " << x << endl; 
     x=A::b; 
     cout << "test A::b = " << x << endl; 
    } 
}; 

int main() 
{ 
    cout << "A::a = " << A::a << endl; 
    cout << "A::b = " << A::b << endl; 
    class B b; 
    b.test(); 
} 

列舉的名字A,B都駐留在A級空間中,因此,您可以使用A::前綴像A::a訪問它們。

+0

我可以使用A :: a得到1 – Sijith

+0

是的,你可以,我會重寫這個例子 – nio

3
A::ab 

只要ab是公開的。

當然,您需要首先修復enum的語法。請參閱this question

2

像這樣:

class A 
{ 
public: 
    enum ab{ 
    a = 1, 
    b = 2 }; 
} 

class B 
{ 
    A::ab myVariable; 
} 
2

您通過

A::ab; 

和價值觀通過

A::a; 
A::b; 

當然訪問類型,這個假設AB是公開的。