通过引用传递对象
Passing Objects by reference
(我没有找到我想要的答案,但我自己想办法,所以我想尝试为将来可能有它的其他人回答我自己的问题(
如何将对象传递给非类函数并更改其数据?例如
class Foo{} 有一个私有的 int x = 5,我想在不直接从类输入 changeValue 函数的情况下将其更改为 10,但使用非类函数来调用此函数。
因此,
如果您的代码看起来像这样:
class Foo {
public:
void changeValue(int val) { x = val; }
private:
int x;
}
并且您想在 changeValue 方法之外更改 x,您需要做的就是添加您想要将其作为朋友更改为 Foo 类的函数。因此,例如,要使其正常工作:
void g(Foo& foo) {
foo.x = 10;
}
您必须将以下行添加到 Foo 类中:
friend void g(Foo& foo);
将类中的某些内容声明为好友允许该函数/类访问私有成员和方法。
假设我们有
class Foo{
private:
int x;
public:
change(int y){
x = y;
}
}
我们想要这个功能
void changeVal(Foo test, int num);
以更改 X 而不是
Foo::change(int y);
我们会给我们的 changeVal 函数对象地址
int main(){
Foo test;
changeVal(&test, 5);
}
然后我们将创建 changeVal 并创建一个指针对象来保存我们原始对象的地址
void changeVal(Foo* test, int num){
...
}
在正文中,我们需要创建第三个对象来获取原始对象的值,因此我们给它存储在"Foo* 测试"中的地址,并使用原始对象的地址更改新对象的值,因此我们正在更改原始对象而不是副本
void changeVal(Foo* test, int num){
Foo test2 = &test;
test2.change(num);
}
相关文章:
- 返回常量对象引用 (getter) 和仅返回字符串有什么区别?
- 我们可以有一个 setter 成员函数作为从 const 对象引用的 const 吗?
- C++对象引用返回不同的值
- 对象引用中的字段以不同的方法返回不同的值
- 通过向构造函数其他对象引用页面来创建对象
- 为什么在对象引用恒定时允许更改为另一个类的指针的成员变量
- 如何在C++中读取 HDF5 对象引用
- C++ 未定义的对象引用
- 从函数返回 libconfig 类设置对象引用
- qt vsaddin错误对象引用未设置为对象的istanse
- 在这种情况下,为什么使用 *此必需的对象引用返回对象引用
- 基本C - 构造contaning对象引用,并将其作为方法参数传递
- C :将对象引用作为参数给出错误:呼叫class :: function()的匹配函数
- C++OOP基础知识-是否正确返回对象引用
- 使用对象引用(可能)在调用destructor后使用对象引用
- 创建返回对象引用的成员函数的最简单方法
- 如何在C++上使用对象引用删除对象
- JNI/Android NDK-维护全局对象引用
- 为什么有些类方法返回"*this"(self的对象引用)?
- 在C++中返回伪对象引用的规则