访问不同类的成员

时间:2013-04-03 14:29:15

标签: c++

我有2个课程,如下所示:

class A : public C
{
void Init();
};

class B : public C
{
int a = 3;
};

如何在A类中访问B类成员?

class A::Init()
{
 class B. a  ???
}

4 个答案:

答案 0 :(得分:2)

也许你想要一个静态成员,你可以在没有B类型的对象的情况下访问它?

class B : public C
{
public:
    static const int a = 3;
};

现在,您可以随时随地(包括A::Init功能)访问B::a

如果这不是您想要的,请澄清问题。

答案 1 :(得分:1)

您必须创建class B的实例并声明变量public

class B : public C
{
    public:
    int a=3;//Data member initializer is not allowed in Visual Studio 2012, only the newest GCC
};

void A::Init()
{
 B b;
 b.a= 0;
}

如果您不想创建class B的实例,请声明变量static

class B : public C
{
public:
    static int a = 3;
};

然后像这样访问它:

void A::Init()
{
   B::a=0;
}

答案 2 :(得分:1)

如果你想要将B类的“属性”作为全局访问,而不是特定的对象,那么在这个类中创建变量static

class B : public C
{
public:
    static const int a = 0;
};

并使用B::a

访问它

或者:

class A{
public:
    void init(){
        static int a2 = 0;
        a1=a2;
    }
    int a(){return a1;}
private:
    static int a1;
};
int A::a1=0;

答案 3 :(得分:0)

您还可以尝试在班级中添加静态功能。但我不确定这是不是你 正在寻找。

class B: public C
{
public:
    static int GetA(void) {return a;}
private:
    static int a;
};
int B::a = 4;

class A: public C
{
public:
    void Init()
    {
    std::cout<<"Val of A "<<B::GetA()<<std::endl;
    }

private:
    int b;
};