为什么字符串数组导致LNK2001错误?

时间:2013-08-05 15:45:42

标签: c++ arrays string std lnk2001

我主要是一名C#程序员,但我需要用C ++完成这个项目,所以我可能会遗漏一些C ++数组。

我有一个我一直在研究的DLL,正在工作并连接到处理用户界面的项目。在DLL中,我正在尝试创建一个记录器类,以便我可以将信息调试到接口中。但是当我尝试使用字符串数组时,我得到一个LNK2001错误。 Bellow是我班级的头文件。

#include <string>
using namespace std;
class Logger
{
public:
    static string& GetLog();
    static void Log(string message);
private:
    static const int maxLogs = 1000;
    static string logs[maxLogs];
};

如果删除字符串数组,则错误消失,但我需要一种方法来存储我的日志消息

1 个答案:

答案 0 :(得分:3)

static成员变量必须定义(恰好一次),这只是类定义中的声明。在一个.cpp文件中添加:

std::string Logger::logs[Logger::maxLogs];

建议阅读Why is "using namespace std" considered bad practice?