我有2个课程,如下所示:
class A : public C
{
void Init();
};
class B : public C
{
int a = 3;
};
如何在A类中访问B类成员?
class A::Init()
{
class B. a ???
}
答案 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;
};