2013-08-05 3 views
0

Я в основном программист на C#, но мне нужен этот проект, выполненный на C++, поэтому я могу что-то пропускать для массивов C++.Почему массив строк вызывает ошибку LNK2001?

У меня есть 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

ли вы инициализировать 'logs' где-нибудь? – Derek

+0

Вам нужно определить статический член, а не просто объявить его. –

+0

Никогда не используйте «using namespace std;» в файле заголовка является обычной практикой. – alexbuisson

ответ

2

Переменная static член должен быть определен (ровно один раз), то есть только объявление в пределах класса defintion. Точно один .cpp файл добавить:

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

Предлагайте чтение Why is "using namespace std" considered bad practice?

+0

Спасибо, это сработало. и спасибо за предложение читать Обучение еще всегда приветствуется :) – Shredder2500