我有使用C ++语言和IloCplex框架的编译问题。
我首先尝试使用makefile编译整个项目,但是我遇到了意外错误,类标题调用 AbstractModel ,以确保此错误不是由于其他文件引起的,我决定用这个命令编译这个类:
g ++ -o AbstractModel.o -c -I / path / to / cplex / include -I / path / to / concert / include -DIL_STD AbstractModel.cpp
然后我意识到我收到了相同的错误消息,这里是 AbstractModel 类:
和type.h类:
错误如下:
在AbstractModel.hpp中包含的文件中:12, 来自AbstractModel.cpp:7: type.h:6:错误:'typedef'之前的构造函数,析构函数或类型转换 在AbstractModel.cpp:7中包含的文件中: AbstractModel.hpp:50:错误:'Vector'没有命名类型 AbstractModel.hpp:51:错误:'Vector'没有命名类型
有什么建议吗?
P.S:Cplex在这台计算机上运行正常,我有另一个项目,它使用相同的类,可以完全使用相同的命令编译。
答案 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