我正在编写一个包含多个类的程序,我正在尝试从类A
访问类B
实例。我正在使用setA()
和getA()
作为A
'数据成员,我在类B
中使用相同的内容。在课程B
中,我还有一个函数可以通过A
函数调用从getA()
获取成员。然后我想比较A
的成员是否与B
的成员相同。
class A {
private:
int a;
public:
void setA(int a);
int getA();
}
class B {
private:
int b;
public:
void setB(int b);
int getB();
bool compareA_B(){
A a.getA(); // <- this is a new object A
B b.getB();
if(a == b)
return true;
else
return false;
}
}
当我通过setA()
在我的主要功能中拨打A a_in_main.setA(2)
时,此A
与上面的箭头不同。
我的问题是如何在A
函数B
中访问compare()
的正确实例?
我觉得我需要使用指针,但我不确定。我一直在寻找互联网,我找不到任何具体的东西。
我编辑了这篇文章,我希望这更清楚。
答案 0 :(得分:0)
声明int a
时,您声明该类实例将包含int,而不是对该实例的引用。
当你进行设置时,你也可以通过按值传递参数(在现实场景中最有可能复制)来在函数中执行相同操作,所以即使它是内部指针,你也可能最终得到你的“引用”提到新制作的副本。
你的成员,以及处理它的函数的签名,需要是一个int的指针或引用,它将存储它所在的内存地址,并且在比较时将比较内存位置而不是存储的值在它。
指向某种类型值的指针的语法是type* var
。
int* var
,int *var
,int * var
都是等效的,您会发现它会根据作者的所有方式表达。
根据该成员的预期用途,您可能还希望确保它不会更改指向const int* var
的数据。
听起来你很早就开始学习C ++,一些初学者书或YouTube视频可能会有所帮助。在知道如何制作指针之前在类中包装引用的值可能是在能够行走之前尝试运行的标志。