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

C++ 从另一个类的构造函数访问类的成员,c++,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.cpp B.h B.cpp 我的问题是,在B.cpp中获得“a”的最佳方式是什么? 我试着使用类“friend”

我的代码如下所示:

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.cpp

B.h

B.cpp

我的问题是,在B.cpp中获得“a”的最佳方式是什么? 我试着使用类“friend”,但没有得到结果

有什么建议吗?
谢谢

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

如果每个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
中将
A
getStuff
声明为
static

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

。。。并以
C
构造函数中的
A::GetStuff()
的形式访问它。

代码中有一些错误,但不清楚您要做什么。你认为
A
的构造函数在做什么?完整的代码很长,我试着只发布相关的结构,如果它让人困惑,很抱歉。理论上,A的构造函数为“A”提供了一个值,这个值我希望能够在B中访问。我看到了,我只是稍微修正了一下。希望现在它有意义了。@user1981855:没有一个
变量。它存在于
A
类的任何实例中,因此,如果要访问
A
则需要
A
的实例。这个问题实际上无法回答。是否有一个
A
实例和许多
B
实例?或者
A
B
是一对一的关系。
A
是否拥有A
B
或反之亦然?或者它们是完全解耦的,我明白了。你的第一个建议就是我需要的。如果我想让构造函数
C
访问类
A
的所有成员,该怎么办?假设class
A
有更多的对象。假设class
有更多的对象,你的意思是什么,你确定你理解你使用的术语吗
A
是一个类,
A foo
声明该类的一个名为
foo
的实例,而
foo.a
是该实例的成员
C
可以访问
A
的所有公共成员。让它成为
朋友
也可以让它访问私人的朋友。
#include "B.h"

C::C() {
a // want to access this int a that occurs in A.cpp
}
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
class A
{
static int a;  
public:
static int GetStuff() {return a;};