【发布时间】:2018-12-21 17:50:21
【问题描述】:
我在将类对象实例作为参数从main() 函数传递给另一个类对象实例时遇到问题。基本上问题出在下面的代码中:
#include <something>
#include "another_thing"
class A
{
void method1()
{
;
}
void method2()
{
;
}
};
class B
{
// Define an object of type class A
A class_object;
// Constructor
B(A &passed_object)
{
class_object = passed_object;
//other stuff here
}
void method1()
{
;
}
void method2()
{
;
}
};
int main()
{
A firstObject;
B secondObject(firstObject);
// Do something that changes A attributes;
return 0;
}
问题是在main() 的执行过程中,firstObject 的一些属性发生了变化,但在B 类的passed_object 中我没有看到这种变化。
编辑 基于@HolyBlackCat 提示,以这种方式解决:
修改了A &class_object;中的A class_object;,从构造函数中删除了class_object = passed_object;并更改了B(A &passed_object) : class_object(passed_object){}中构造函数的B(A &passed_object){}
【问题讨论】:
-
如果你想让
class_object引用一些A类型的对象(例如在main中创建的对象),你需要使class_object成为一个参考. -
还需要成员初始化列表