修改参数而不引用

modify parameter without reference

本文关键字:引用 参数 修改      更新时间:2023-10-16

我正在使用一个外部库,我有一个从另一个类继承的类,具有下一个函数

void IOCallback::Open(const char* filename, bool isOpen)

我需要修改布尔值,但我不能修改代码以将其用作参考。

无论如何我能做到这一点吗?

我需要修改布尔值,但我不能修改代码以将其用作参考。

如果你的意思是这样...

bool b = false;
IOCallback callback;
callback.Open(filepath, b);
if(b) {  // <- will never actually evaluate to anything but false
    // do something
}

。然后,好吧,你不能。 该函数接收其参数的副本。 您可以自由地从函数内部修改参数,但您将无法以调用者能够看到所述修改的方式执行此操作。

我质疑这一要求背后的理由。 如果您编写了代码,则可以对其进行修改或添加另一个重载版本以执行所需的操作。 如果你没有编写代码并且无法修改它,那么它从一开始就没有打算改变它的参数,那么有什么收获呢?