0

ヘッダーファイルで関数を宣言しました。

理由はわかりませんが、コンパイラはこの行についてうめき声を上げ、"The Text ">"予期しないと言います。

AIX 5.3 と XLC/VAC コンパイラを使用しています。関数の定義にも何か問題があるのか​​もしれませんが、マップが機能するためには、マップが保持している型を認識している必要があると想定しました。

問題のある行を以下に示します。

std::map<std::string , std::list<std::pair<int, Event*> > * > * functionX(Customer * id, std::multimap<string, CustomerDetails> * p_mapWithCustomers);

これは関数の正しい宣言だと思います

以下で提案されているように、typedef を定義しましたが、残念ながら、これは問題をシフトするだけで、typedef の行で同じエラーが発生します。

typedef std::pair<int, Event* > pair_event_t;
typedef std::map<std::string, pair_event_t * > map_rule_t;
4

4 に答える 4

7

問題は、>>これが有効な c++ 11 を使用していない限り、スペースを挿入することです。> >

std::map<std::string , std::list<std::pair<int, Event*> >*> * functionX(Customer * id, std::multimap<string, CustomerDetails> * p_mapWithCustomers);
于 2012-02-24T14:41:59.670 に答える
2

トークンは、2 つの連続する文字>>から分離された演算子です。>それらの間にスペースを入れてください。

C++11 はそれを修正しますが、コンパイラが新しい標準をサポートしていない場合、またはそのサポートを有効にしていない場合は、文字を分離し>>て、場所のない演算子と混同しないようにする必要があります。テンプレート操作で。

于 2012-02-24T14:42:22.217 に答える
1

の真ん中にスペースを追加した後、p_mapWithCustomers の宣言でその上に修飾>>を追加する必要があります。std::string

于 2012-02-24T15:33:34.947 に答える
0

問題は、私がそれを取り出すとすぐに含まれている定義ファイルにあり、エラーは消えました。

EclipseのWindowsでコンパイルしたときに、マクロ定義エラーで予期しないサインがスローされていたことがわかりました。予想外の気配も「>」でした。貢献してくれてありがとう。

オリバー

于 2012-02-28T05:48:52.037 に答える