0

現在、「<<」と「>>」の文字列でダ​​ブル シェブロンを使用して、ビット シフトを表現しようとしています。ただし、私のプログラムは、入力に二重シェブロンの使用を認識していないようです。他の文字列に変更すると、完全に機能します。

derpleft は機能しますが、"<<" は機能しません。

keywords_["derpleft"]  = keywords_["<<"] = make<BitShiftLeft>();
keywords_["derpright"] = keywords_[">>"] =  make<BitShiftRight>();

dictionary_type keywords_;

typedef std::map<string_type,Token::pointer_type>   dictionary_type;

typedef std::string string_type;
4

2 に答える 2

0

私はこの声明を理解していません:

keywords_["derpleft"]  = keywords_["<<"] = make<BitShiftLeft>();

呼び出しによって返された値を指し示す (格納する)<<ことが必要なようです。その場合、単純に次のようにしないのはなぜですか。derpleftmake<BitShiftLeft>

keywords_["derpleft"]  = make<BitShiftLeft>();
keywords_["<<"] =  make<BitShiftLeft>();

makecall の値をローカル変数に格納できます (autoキーワードを推奨)。

そして最も重要なことは、問題が何であるかについて言及していないことです。

于 2012-12-08T05:56:46.593 に答える
0

このスレッドを閉じるのを忘れていましたが、エディター機能の 1 つでブール値を true に設定しなかったことが問題でした。それは単に私が作成した論理エラーでした。

于 2013-01-09T21:29:17.470 に答える