1

QT Creator. Есть класс:

class Option: public QObject
{
Q_OBJECT
public:
    static int getSizeHistory();
    Option();
    ~Option();

private: static int sizeHistory; };

Его реализация в option.cpp. С другого класса я вызываю его статический метод:

void MainWindow::on_actionOpen_triggered()
{
    Option::getSizeHistory();
}

Компилятор выдает ошибку:

mainwindow.obj:-1: error: LNK2019: unresolved external symbol "public: static int cdecl Option::getSizeHistory(void)" (?getSizeHistory@Option@@SAHXZ) referenced in function "private: void thiscall MainWindow::on_actionOpen_triggered(void)" (?on_actionOpen_triggered@MainWindow@@AAEXXZ)

Abyx
  • 31,143
  • Его реализация в option.cpp

    Код option.cpp в студию. И он вообще линкуется в проекте?

    –  Jul 09 '14 at 12:28
  • Файл "option.cpp" в проект добавлен. Вот реализация этого метода:

    int Option::getSizeHistory() { return Option::sizeHistory; }

    – Vadym Demchuk Jul 09 '14 at 12:51
  • @vaddemgen: добавлен — это хорошо. А всё же, он линкуется? Может, вы его как-то не так добавили. Или например нахимичили с namespace'ами. Или ещё что-нибудь. Выложите куда-нибудь весь файл, в приведённом фрагменте проблем не видно. – VladD Jul 09 '14 at 13:36
  • так и есть. забыл инициализировать статический член класса. Спасибо) – Vadym Demchuk Jul 09 '14 at 21:28

1 Answers1

1

Возможно вы забыли инициализировать статический член класса перед его использованием (попробуйте static int sizeHistory = 0;)

MDJHD
  • 2,542