gpt4 book ai didi

c++ - 使用命名空间和静态方法时遇到问题

转载 作者:行者123 更新时间:2023-11-27 22:57:55 45 4
gpt4 key购买 nike

我正在尝试编写一些命名空间静态方法和变量,以便拥有一组我可以在代码中的任何位置使用的函数。这就是我所拥有的: header :

namespace CProfileIO
{
static void setAppDir(std::string appDir);
static int reloadProfiles();

static std::string directory;
static std::list<std::string> profilesList;
}

来源:

namespace CProfileIO
{

void setAppDir(std::string appDir)
{
directory = appDir;
}

int reloadProfiles()
{
// ...
}

} // namespace CProfileIO

然后在我的代码中的某处:

#include "CProfileIO.h"

int main(int argc, char * argv[])
{
string appDir = string(dirname(*argv));
CProfileIO::setAppDir(appDir);
.
.
.
}

当我尝试编译时,我在使用该函数的那一行出现错误:

... undefined reference to `CProfileIO::setAppDir(std::string)'

我不知道哪里出了问题。我愿意提供所有帮助!

最佳答案

您不应在此处使用静态函数,因为它们仅在当前翻译单元中可见。因此,您声明了一个您在 cpp 中(静态地)定义的静态函数,那么其他翻译单元将看不到它。

您不应在此处简单地使用 static 关键字,而应将变量(但不是函数)声明为 extern

此外,我建议将字符串参数作为常量引用传递 (void setAppDir(const std::string& appDir);)

关于c++ - 使用命名空间和静态方法时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30775341/

45 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com