2012-02-24 16 views
0

私は自分のヘッダファイルに関数を宣言しました。コンパイラの叫び文字 ">"は予期しないC++ XLC

私は理由が分かりませんが、コンパイラがこの行についてうんざりし、"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での行に同じエラーを取得し、問題をのみshiftetました。

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

http://en.wikipedia.org/wiki/Maximal_munch – Muggen

+0

あなたには、いくつかのtypedefを使用したい場合は、おそらく読むために非常に簡単にタイプを見つけるだろう、と私はあなたにも希望賭けたいですエラーを見つけます(タイプを管理可能な塊に分解するときに魔法的に消えない場合) – MSalters

+0

"叫ぶ"、 "怪しい"、 "仮定する" ...コンパイラが宣言が間違っていると言っているので、コンパイラは間違っている? _new_コード(Nimの修正後)と_new_エラーを編集するか、MSaltersのアドバイスを取って型の名前付けを開始してください。 – Useless

答えて

0

エラーが消えた直後にインクルードされた定義ファイルに問題がありましたが消えました。

私はマクロ定義エラーで予期しないサインを投げていた私の日食のウィンドウでそれをコンパイルしたときにわかった。予期せぬ兆しも ">"でした。貢献してくれてありがとう。

オリバー

7

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

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

私はあなたが提案したことをまだしていますが、 "テキスト"> "は予期せぬものです" std :: map > *> * functionX Customer * id、std :: multimap * p_mapWithCustomers); –

+0

@OliverStutz - その行は私にとってはうまく見えますが、エラー全体を投稿することができますか? – Nim

+0

1540-0063(S) ">"という文字列は予期しないものです。これは私が持っているすべてです。 –

2

トークン>>二つの連続>文字とは別の演算子です。それらの間にスペースを入れてください。

コンパイラが新しい標準をサポートしていない場合、またはサポートを有効にしていない場合は、文字を区切って、>>オペレータと混乱しないようにする必要がありますこれはテンプレート操作の場所がありません。

1

>>の中に空白を追加した後、おそらく資格をstringのp_mapWithCustomersの宣言に追加する必要があります。