从另一个类的构造函数访问类的成员

时间:2013-03-14 21:56:05

标签: c++

我的代码看起来像这样:

的main.cpp

#include <iostream>
#include "A.h"
#include "B.h"
using namespace std;

int main(){

int d,f;
A c();
d = c.GetStuff();

B *d = new C();
f = d->Get();

return 0;
}

A.H

#ifndef A_H
#define A_H
class A
{
int a;

public A();

int GetStuff() {return(a) ;}

};

#endif

A.cpp

#include "A.h"

A::A()
{
 a = 42;//just some value for sake of illustration
}

B.h

#ifndef B_H
#define B_H

Class B 
{
public:
virtual int Get(void) =0;

};

class C: public B {
public:
C();

int Get(void) {return(a);}
};
#endif

B.cpp

#include "B.h"

C::C() {
a // want to access this int a that occurs in A.cpp
}

我的问题是,获取B.cpp中“a”的最佳方式是什么? 我尝试使用“朋友”课,但我没有得到结果。

有什么建议吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

两个不同的答案,取决于你的意思

如果每个A对象都有自己唯一的'a'变量(这就是你定义它的方式),那么你需要将A传递给C的构造函数:

C::C(const A &anA) {
int foo= anA.a; // 
}

并且,调用构造函数变为:

A myA;
B *myC = new C(myA);   // You picked confusing names for your classes and objects

但是,如果您希望所有A对象共享一个共同的a值,那么您应该在a中将getStuffstatic声明为A

class A
{
static int a;  
public:
static int GetStuff() {return a;};

...并在A::GetStuff()构造函数中将其作为C进行访问。