Getter函数返回错误的值

Getter function returns the wrong value?

本文关键字:错误 返回 函数 Getter      更新时间:2023-10-16

在我的utils类中,我有一个私有解决方案dir字符串-它在构造函数中设置(硬编码)。我有一个getter函数返回字符串。在另一个文件中,我有一个utils实例(指针)。当我调用getter函数时,它返回空。

main.cpp

utils* myUtils = new utils();
std::cout << myUtils->getSolutionDir() + " is the current directory" << std::endl;
delete myUtils;

utils.hpp

public:
    utils ();
    ~utils ();
    std::string getSolutionDir();
private:
    std::string _solutionDir;

utils.cpp

utils::utils () {
    std::string _solutionDir = "C:\Users\user\Documents\Coding\CodeBlocks\MettaRPG";
}
utils::~utils () {}
std::string utils::getSolutionDir() {
    return _solutionDir;
}

输出(GCC编译):

是当前目录

看一下构造函数中的这一行:

std::string _solutionDir = "C:\Users\user\Documents\Coding\CodeBlocks\MettaRPG";

这一行声明了一个名为_solutionDir局部变量,并将其设置为指定的字符串,而不是获取名为_solutionDir的现有数据成员并更改其值。要解决这个问题,请从这一行删除std::string

或者,如果你有一个c++ 11编译器,考虑把你的类改成这样:

public:
    ~utils ();
    std::string getSolutionDir();
private:
    std::string _solutionDir = "C:\Users\user\Documents\Coding\CodeBlocks\MettaRPG";