访问不同类中的成员

access member in different classes

本文关键字:成员 同类 访问      更新时间:2023-10-16

我有两个类,如下:

class A : public C
{
void Init();
};
class B : public C
{
int a = 3;
};

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

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

也许你想要一个静态成员,不需要B类型的对象就可以访问它?

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

现在你可以从任何地方访问它(包括你的A::Init函数)作为B::a

如果这不是你想要的,那么请澄清问题。

您必须创建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;
}

如果你想访问类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;

您也可以尝试在类中添加静态函数。但我不确定你是否

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;
};