【发布时间】:2021-07-09 08:48:11
【问题描述】:
我正在使用 C++ 进行开发。我有 2 个对象: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 对象是 StandaloneAgent 的一个属性,带有
ConfigManager * mConfigMgr; 变量。
而我要访问的文件位于 ConfigManager 的 mConfigFile 属性中。
问题是:
在放置 std::cout 时, 中的 mConfigFile 是好的并且 后的文件变量
file = mConfigFile;
没问题
但是当我在独立代理的getConfigFile()函数中返回时,文件变量是一个空指针,我不知道为什么。
是否有我缺少的 C++ 规范?
【问题讨论】:
-
您的函数中没有 指针引用。指针引用将是
char*& file。 Example -
指针不应该在这里工作吗?
-
如果您更改函数内部的指针,则该更改是函数的本地更改。您作为参数传递给函数的指针保持不变 - 除非您通过引用来获取它:
char*& file -
参数是按值传递的,除非你通过引用传递。指针并不特别。
file = mConfigFile修改是getConfigFile的局部变量 -
您将指针的副本传递给函数,然后修改副本。所以它不会在函数之外可见。
标签: c++ function pointers reference composition