2012-02-15 4 views
0

C++言語とIloCplexフレームワークを使用したコンパイルの問題があります。エラー: "予想されるコンストラクタ、デストラクタ、または型変換の前に 'typedef'"

このエラーは、他のファイルによるものではないことを保証するために、私はちょうどすることを決定し、クラスのヘッダーコールAbstractModelで、私が最初にメイクファイルを使用して、プロジェクト全体をコンパイルしようとしましたが、私は予期しないエラーが発生しましたこのコマンドでこのクラスをコンパイルします

http://pastebin.com/B9YiqKUS

g++ -o AbstractModel.o -c -I/path/to/cplex/include -I/path/to/concert/include -DIL_STD AbstractModel.cpp

は、その後、私は同じエラーメッセージが、ここにAbstractModelクラスでしまったことに気づきました

とtype.hクラス:

http://pastebin.com/trQ6BDBK

エラーは以下の通りです:

In file included from AbstractModel.hpp:12, from AbstractModel.cpp:7: type.h:6: error: expected constructor, destructor, or type conversion before ‘typedef’ In file included from AbstractModel.cpp:7: AbstractModel.hpp:50: error: ‘Vector’ does not name a type AbstractModel.hpp:51: error: ‘Vector’ does not name a type

任意の提案ですか?

P.S:Cplexはこのコンピュータで正常に動作しますが、同じコマンドで完全にコンパイルされる同じ種類のクラスの別のプロジェクトがあります。

#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 

答えて

1

CustomType.hppがAbstractModel.hppが使用するのtypedefを定義するためCustomType.hppがAbstractModel.hpp前にインクルードする必要があります。

+0

結果は同じままですが、私は同じ動作をする別のプロジェクトを持っています:/ – Faylixe

+0

まあ私は問題を見つけました。私は以前のプロジェクトの定義をコピーして、カーラクターは > ILOSTLBEGIN マクロ。 ご迷惑をおかけして申し訳ありませんが、ご意見ありがとうございました。 – Faylixe

+0

本当にそのマクロが必要ですか?そして、私は一致するILOSTLENDを見ていない – CashCow

0

あなたは、あなたのヘッダー内の警備員が間違っている含まれています。

本当にそうであるかどうかは、貼り付けたものから見ることは不可能です。

理想的には、あなたのAbstractModel.hppヘッダーが#include "CustomType.hpp"そのものに頼るのではなく、それ自体になります。

+3

は違いはありません。 – CashCow

+0

はい、それは何の違いもありません。最初はそれを置くだけであり、typedefには影響しません。 – Faylixe

関連する問題