修改变量后,因变量不反映更改?

时间:2020-09-12 02:48:03

标签: c++

我试图使程序将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关键字有关吗?

2 个答案:

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