我试图使程序将filePath作为std :: string,这取决于basePath(我的项目的路径)和相对的const路径。
如果我修改basePath,则它不会反映出对filePath的任何更改。
#include <iostream>
using namespace std;
string basePath = "C:\\Pime\\";
// main location of my project
string filePath = basePath + "folder\\";
// relative location in my project
int main() {
basePath = "D:\\Pime\\ ";
std::cout << filePath<< std::endl;
// prints-> C:\Prime\folder
return 0;
}
如何避免这种情况。解决方案与volatile关键字有关吗?
答案 0 :(得分:0)
在C ++中,没有像“因变量”这样的东西。
每次获得 filePath
的值时都需要进行计算。最简单的解决方案是使其具有功能:
std::string basePath = "C:\\Pime\\";
std::string getFilePath() { return basePath + "folder\\"; }
答案 1 :(得分:0)
您正在混淆C ++变量和makefile中递归扩展的变量。
foo="hello"
bar="$foo!"
foo+=" world" #$bar is now "hello world!"
C ++没有这个。变量的值是在分配时确定的,就像扩展变量一样。
有关差异,请参见https://www.gnu.org/software/make/manual/html_node/Flavors.html。