2013-07-25 66 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是公开的。