Почему строковый массив вызывает ошибку LNK2001?

Я в основном программист на C #, но мне нужен этот проект на C ++, поэтому я могу что-то упустить для массивов C ++.

У меня есть DLL, над которой я работаю, ведьма работает и подключена к проекту, который обрабатывает пользовательский интерфейс. В DLL я пытаюсь создать класс логгера, чтобы я мог отлаживать информацию в интерфейсе. Но когда я пытаюсь использовать строковый массив, я получаю ошибку LNK2001. Ниже приведен мой заголовочный файл для класса.

#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

Решение

static переменная-член должна быть определенный (ровно один раз), это только декларация в пределах определения класса. Ровно в один .cpp добавление файла:

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

Предложить чтение Почему "используя пространство имен std" считается плохой практикой?

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]