Этот форум содержит много примеров такой ситуации, но в моем случае статические переменные определены правильно, однако я все равно получаю эту ошибку. Таким образом, эта проблема не дублирует предыдущую и выше ссылку не отвечает на вопрос. Предлагаемый 21 ответ на сообщение не имеет решения, которое дал мне Симон, пожалуйста, отметьте это как "дубликат".
Кажется, я все правильно заявил, проверьте это:
.h файл:
class ValueSetsModelsContainer : public QObject
{
Q_OBJECT
public:
static void DLLEXPORT loadAllergiesValueSets(MPTDatabase *db);
static void DLLEXPORT loadProceduresValueSets(MPTDatabase *db);
// Models access functions
static QStandardItemModel *drugsModel();
static QStandardItemModel *substanceModel();
static QStandardItemModel *reactionsModel();
private:
static QStandardItemModel *myDrugsModel, *mySubstanceModel, *myReactionsModel;
};
.cpp
QStandardItemModel *ValueSetsModelsContainer::myDrugsModel = 0;
QStandardItemModel *ValueSetsModelsContainer::mySubstanceModel = 0;
QStandardItemModel *ValueSetsModelsContainer::myReactionsModel = 0;
QStandardItemModel *ValueSetsModelsContainer::drugsModel()
{
return ValueSetsModelsContainer::myDrugsModel;
}
QStandardItemModel *ValueSetsModelsContainer::substanceModel()
{
return ValueSetsModelsContainer::mySubstanceModel;
}
QStandardItemModel *ValueSetsModelsContainer::reactionsModel()
{
return ValueSetsModelsContainer::myReactionsModel;
}
Таким образом, статические переменные определены в cpp, однако я все еще получаю ошибку связывания в другом модуле, который вызывает методы ValueSetsModelsContainer:
- allergiesdialog.obj: -1: ошибка: LNK2001: неразрешенный внешний символ "private: статический класс QStandardItemModel * ValueSetsModelsContainer:: myDrugsModel" (? MyDrugsModel @ValueSetsModelsContainer @@0PAVQStandardItemModel @@A)
- allergiesdialog.obj: -1: ошибка: LNK2001: неразрешенный внешний символ "private: static class QStandardItemModel *
ValueSetsModelsContainer:: mySubstanceModel"
(? MySubstanceModel @ValueSetsModelsContainer @@0PAVQStandardItemModel @@A)- allergiesdialog.obj: -1: ошибка: LNK2001: неразрешенный внешний символ "private: static class QStandardItemModel *
ValueSetsModelsContainer:: myReactionsModel"
(? MyReactionsModel @ValueSetsModelsContainer @@0PAVQStandardItemModel @@A)
Где проблема может быть?