У меня есть это определение класса в файле .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
С «класса APEX_EXPORT ApexLoader» является линия с ошибки и предупреждения.
APEX_EXPORT определен в файле заголовка, который включен в этот же файл.
EDIT: 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
И как выглядят линии * перед классом? Что такое 'APEX_EXPORT'? Нет другого символа «ApexLoader» (например, как макрос препроцессора)? –
Где указано APEX_EXPORT? Если это в другом файле, вы включаете этот файл в свой файл заголовка? –
Вы не определили макрос 'APEX_EXPORT', поэтому он выглядит как объявление переменной типа' class APEX_EXPORT' под названием «ApexLoader». Точно такие же ошибки [здесь] (http://ideone.com/A9Pc6M). – molbdnilo