无法使用方法更改成员值
unable to change member value with method
我的 blob 类中有一个名为 size 的 int 成员,我试图在方法中更改其值。 最初,我尝试...
void blob::make_union(blob parent_blob){
parent=&parent_blob;
parent_blob.size = parent_size
}
然后我尝试创建一个函数,其唯一目的是更改大小值。 值得注意的是,它更改了函数中的值,并通过一些 cout 语句进行了验证。
int blob::change_size(int dat_size){
size=size+dat_size;
return this.size;
}
使新方法更改我的其他方法
'void blob::make_union(blob parent_blob){
parent=&parent_blob;
int temp = size;
parent_blob.size = parent_blob.change_size(temp);
}'
还是没有骰子。 主函数中的以下内容确实有效。
if (charmatrix[m-1][n-1]==charmatrix[m][n]){
blobmatrix[m][n].make_union(blobmatrix[m-1][n-1]);
blobmatrix[m-1][n-1].size=blobmatrix[m-1][n-1].size + blobmatrix[m][n].size;
我做错了什么?
您正在按值传递blob
类:您正在创建blob
对象的副本,这就是change_size
正在使用的函数。
void increment_number(int i) { ++i; }
void increment_number_ref(int& i) { ++i; }
int main()
{
int n = 6;
// This takes a copy of the number, and increments that number, not the one passed in!
increment_number(n);
// n == 6
// This passed our object by reference. No copy is made, so the function works with the correct object.
increment_number_ref(n);
// n == 7
return 0;
}
如果要修改该对象的值,则需要通过引用(或作为指针)传递blob
:见上文。
在按引用传递和按值传递的语言中 - 如果您遇到更改的情况,然后突然更改"消失",则几乎可以肯定是传递副本而不是引用。
尝试更改原型以通过引用传入 Blob。
相关文章:
- 如何将函数集合传递给客户端类,以便将它们当作客户端类本身的成员使用
- 访问条件类成员的方法不仅在被调用时才编译
- C++:使用方法调用析构函数的顺序是什么?
- 对类中的对象使用方法
- 继承:调用基类的成员和方法
- 对类成员使用unique_ptr
- 如何使用成员 c++ 使用 gtest 测试基于私有类的行为
- LNK2019 在文件中调用静态成员的方法时出错.cpp
- 正确的使用方法
- 如何使用方法ID从Powerbuilder调用PBNI方法
- 如何使用方法覆盖在输出屏幕上显示堆栈整数值
- 为什么我可以调用一个从const方法更改成员的方法
- Windows 上的 Clang/LLVM 7 和 8 多次初始化内联静态数据成员(使用 link.exe 和 lld-
- 是否可以为成员的方法编写类似于固有方法的 using 声明?
- 使用方法失败更改constexpr对象成员
- 无法使用方法更改成员值
- 在派生类中使用提取运算符(>>)的方法以及在C++中处理静态数据成员的方法
- 为什么成员模板方法必须在类外使用模板<>专门化
- 一种使用不同风格的私有成员的方法
- 在c++中使用全局函数的struct成员的方法