Ошибка: «ожидаемый конструктор, деструктор или преобразование типа перед typedef» - PullRequest
0 голосов
/ 15 февраля 2012

У меня проблема с компиляцией с использованием языка C ++ и платформы IloCplex.

Сначала я попытался скомпилировать весь проект с использованием make-файла, но я получил неожиданную ошибку с вызовом заголовка класса AbstractModel , чтобы убедиться, что эта ошибка не связана с другим файлом, я решил просто скомпилировать этот класс с помощью этой команды:

g ++ -o AbstractModel.o -c -I / path /в / cplex / include -I / path / to / концерта / include -DIL_STD AbstractModel.cpp

Затем я понял, что получил то же сообщение об ошибке, вот это AbstractModel класс:

http://pastebin.com/B9YiqKUS

и класс type.h:

http://pastebin.com/trQ6BDBK

Ошибка следующая:

В файле, включенном из AbstractModel.hpp: 12, из AbstractModel.cpp: 7: type.h: 6: ошибка: ожидаемый конструктор, деструктор или преобразование типа перед 'typedef' В файле, включенном в AbstractModel.cpp: 7: AbstractModel.hpp: 50: ошибка: «Вектор» не называет тип AbstractModel.hpp: 51: ошибка: «Вектор» не называет тип

Есть предложения?

PS: Cplex отлично работает на этом компьютере, у меня есть другой проект с таким же классом, который прекрасно компилируется с той же командой.

Ответы [ 2 ]

1 голос
/ 15 февраля 2012

CustomType.hpp должен быть #included перед AbstractModel.hpp, потому что CustomType.hpp определяет typedefs, которые использует AbstractModel.hpp.

Невозможно увидеть из того, что вы вставили, действительно ли этоcase.

В идеале ваш заголовок AbstractModel.hpp будет #include "CustomType.hpp" сам по себе, а не полагаться на то, что это делается.

0 голосов
/ 15 февраля 2012

Вы включили охрану в свой заголовок неправильно:

#ifndef CUSTOM_TYPE_H

        typedef IloNumArray Vector;
        typedef IloArray<IloNumArray> Matrix;
        typedef IloNumVarArray VariableVector;    
        typedef IloArray<IloNumVarArray> VariableMatrix;    

        #define CUSTOM_TYPE_H //This should be just under the #ifndef, not here.
#endif
...