在我的utils类中,我有一个私有解决方案dir字符串 - 它在构造函数中设置(硬编码)。我有一个返回字符串的getter函数。在另一个文件中,我有一个utils实例(指针)。当我调用getter函数时,它返回空。
的main.cpp
<img src="http://picture.com/1.jpg" />
utils.hpp
utils* myUtils = new utils();
std::cout << myUtils->getSolutionDir() + " is the current directory" << std::endl;
delete myUtils;
utils.cpp
public:
utils ();
~utils ();
std::string getSolutionDir();
private:
std::string _solutionDir;
OUTPUT(GCC编译器):
是当前目录
答案 0 :(得分:2)
在构造函数中查看这一行:
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";