C++ 从另一个类的构造函数访问类的成员
我的代码如下所示: main.cppC++ 从另一个类的构造函数访问类的成员,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”
#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
是否拥有AB
或反之亦然?或者它们是完全解耦的,我明白了。你的第一个建议就是我需要的。如果我想让构造函数C
访问类A
的所有成员,该怎么办?假设classA
有更多的对象。假设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;};