Переменная имеет неполный тип в определении класса?

У меня есть это определение класса в файле .h, а реализация в файле .cpp. Когда я пытаюсь скомпилировать это, файл заголовка выдает некоторые ошибки и предупреждения:

    /home/don/BerthaApex/apex/src/lib/apexmain/apexloader.h:6: error: variable 'APEX_EXPORT ApexLoader' has initializer but incomplete type
class APEX_EXPORT ApexLoader
^
/home/don/BerthaApex/apex/src/lib/apexmain/apexloader.h:6: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]
/home/don/BerthaApex/apex/src/lib/apexmain/apexloader.h:9: error: expected primary-expression before 'public'
public:

Код, в котором возникает эта ошибка:

#ifndef _APEXLOADER_H
#define _APEXLOADER_H

#include "global.h"
class APEX_EXPORT ApexLoader
{

public:
int Load( int argc, char *argv[]);

};

#endif

При этом «class APEX_EXPORT ApexLoader» — строка с ошибкой и предупреждением.

APEX_EXPORT определен в заголовочном файле, который входит в этот же файл.

РЕДАКТИРОВАТЬ:
APEX_EXPORT определяется в «global.h» следующим образом:

#ifdef APEX_MAKEDLL
#define APEX_EXPORT APEX_EXPORT_DECL
#else
#define APEX_EXPORT APEX_IMPORT_DECL
#endif

Кто-нибудь знает, почему эти ошибки есть? И как я могу от них избавиться?
Заранее спасибо!

Компилятор: gcc 4.8.4
ОС: Ubuntu 14.04

-1

Решение

Мои психические навыки отладки говорят мне, что APEX_EXPORT не #defined и, следовательно, компилятор думает, что вы пытаетесь объявить переменную этого типа.

Если вы думаете, что включили все правильные заголовки, лучший способ — просто запустить препроцессор в вашем исходном файле и посмотреть, что он генерирует (например, g++ -E).

8

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


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