我目前正在设计一个将引用另一个对象的数据的类。在这个新类中,我试图传递一个对象引用,以便新类可以查看对象的值,而无需复制对象的原始数据。不过,我正在为此苦苦挣扎。C++将Const对象引用传递给构造函数
目前,我有以下类原型:
Force2Motion(const RigidBody& rigid_body);
所以,当我通过这个引用到构造函数,我想该对象已初始化后,保存这个以备将来使用。因此,我想要某种方式说
RigidBody _memberObject = rigid_body;
但是,我想避免将所有rigid_body复制到它自己的对象。相反,我以为这样就可以创建对象时做这样的事情
// Force2Motion Member Object
RigidBody& _rigidBody;
更合适,然后让下面的构造
Force2Motion(const RigidBody& rigid_body):
_rigidBody(rigid_body)
但是,这将引发一个错误,说,我不是允许分配一个对const引用的引用。我想确保这个新类不会重新分配构造函数的引用,因此我相信我需要const。
我的确意识到,如果我要将成员对象初始化为一个常量引用,它将允许我运行构造函数,但后来我无法使用任何对象成员函数,因为编译器认为访问成员函数可能会更改原始对象引用的数据。
这样的,我有:
const RigidBody& _rigidBody;
与构造
Force2Motion(const RigidBody& rigid_body):
_rigidBody(rigid_body)
是否有变化,可以到刚体类,这样我仍然可以使用成员函数进行,即使我已经宣布了对象为const?如在,我可以标记某些功能,以便它们表明访问它们不会更改对象内的任何数据?
感谢您的帮助!
编辑:在我描述问题的过程中,我意识到我应该问的真正问题。因此我很容易找到问题。看看这link。它解释了如果你初始化一个对象为const,你将无法访问该对象的任何成员函数,因为访问成员函数可能会改变定义为const的对象内的数据。因此,如果你有一个成员函数,你知道不会改变对象的数据,你需要用一个const关键字标记该函数(参考具体的链接)。这样做可以让你声明一个对象为const,但仍然可以访问某些成员函数。