我的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;
我做错了什么?
答案 0 :(得分:0)
您按值传递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
:见上文。
答案 1 :(得分:0)
在通过引用传递并通过值传递的语言中 - 如果您有进行更改的情况,然后突然发生变化,那么您几乎可以肯定地通过了复制与参考。
尝试更改原型以通过引用传递blob。