函数参数中的指针似乎不起作用



我正在C++中进行开发。我有两个对象:它们是StandaloneAgent和ConfigManager。我想从独立代理访问ConfigManager中的一个带有函数的char*变量。


int32_t StandaloneAgent::getConfigFile(char * file){
int32_t code = mConfigMgr->getConfigFile(file);
return code;
}
int32_t ConfigManager::getConfigFile(char * file){
file = mConfigFile;
return 0;
}

这里,ConfigManager对象集是具有ConfigManager * mConfigMgr;变量。我想要访问的文件位于ConfigManager的mConfigFile属性中。

问题是:

在放入std::cout时,中的mConfigFile正常,并且之后的文件变量

file = mConfigFile;

正常吗

但是当我在独立代理的getConfigFile((函数中返回时,文件变量是一个空指针,我不知道为什么。

有没有我缺少的C++规范?

函数的参数要么通过值传递,要么通过引用。通过值传递给的任何变量都将是函数的本地变量,对其所做的任何更改也是函数的本地更改。这意味着,当为指针(file = mConfigFile(分配新值时,只需更改函数中的指针。作为参数传递的指针不受影响。

通过引用获取参数时,函数内部的变量会引用用于调用函数的变量。对该变量所做的任何更改都将直接对函数调用中使用的变量进行。

在您的情况下,这意味着您需要更改ConfigManager::getConfigFile函数:

int32_t ConfigManager::getConfigFile(char*& file){
file = mConfigFile;  // the change is made to the variable used as an argument
return 0;
}

如果传递给StandaloneAgent::getConfigFile的指针也应该更改(我认为是这样(,那么您需要进行相同的更改:

int32_t StandaloneAgent::getConfigFile(char*& file){
int32_t code = mConfigMgr->getConfigFile(file);
return code;
}

最新更新