错误:“'typedef'之前的预期构造函数,析构函数或类型转换”

时间:2012-02-15 12:59:02

标签: c++ compilation cplex

我有使用C ++语言和IloCplex框架的编译问题。

我首先尝试使用makefile编译整个项目,但是我遇到了意外错误,类标题调用 AbstractModel ,以确保此错误不是由于其他文件引起的,我决定用这个命令编译这个类:

  

g ++ -o AbstractModel.o -c -I / path / to / cplex / include   -I / path / to / concert / 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:错误:'Vector'没有命名类型   AbstractModel.hpp:51:错误:'Vector'没有命名类型

有什么建议吗?

P.S:Cplex在这台计算机上运行正常,我有另一个项目,它使用相同的类,可以完全使用相同的命令编译。

2 个答案:

答案 0 :(得分:1)

在AbstractModel.hpp之前,CustomType.hpp必须是#included,因为CustomType.hpp定义了AbstractModel.hpp使用的typedef。

不可能从你粘贴的内容中看出是否确实如此。

理想情况下,您的AbstractModel.hpp标头将#include "CustomType.hpp"本身,而不是依赖于它。

答案 1 :(得分:0)

你标题中的包含警卫是错误的:

#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