无法使用方法

时间:2015-04-29 04:20:41

标签: c++

我的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;

我做错了什么?

2 个答案:

答案 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。