boost::spirit (構文解析ライブラリ) ― エラーとその対処方法

DT Specials -> Boost -> boost::spirit 構文解析ライブラリ ― エラーとその対処方法

Last update : Jan. 13th, 2005

はじめに

構文解析ライブラリ boost::spirit の実装には変態的テクニックがふんだんに使われています.そのため,コンパイルエラーに対してどう対処してよいかさっぱり分からないこともままあります.また,コンパイルは通るが思い通りに動かない場合,原因を追跡するのも一苦労です.

このページは,私が boost::spirit を使用中に遭遇したエラーとその対処方法をまとめたものです.この中のどれかがあなたのお悩みを解決してくれる…かも.

なお,このページは boost::spirit の使い方を解説するものではありません.基本的な解説は Boost C++ Library プログラミング(秀和システム,2004年)や,Let's boost を参考にしてください.

※ 以下のエラーメッセージ等は Visual C++ .net 2003 のものを使用しています.

コンパイルエラー

fatal error C1001: 内部コンパイラ エラー

工事中

error C2903: 'definition' : シンボルはクラス テンプレートでも関数テンプレートでもありません。

考えられる原因

特に,「クラス内部でクラスを宣言する」ことに慣れていない方や spirit を初めて使う方は,definition クラステンプレートを定義すべき場所を間違えている可能性が高いです.今一度確認してみてください.

error C3848: 型 'const (セマンティックアクション関数名,または関数オブジェクト名) を含む式は、(セマンティックアクション関数名,または関数オブジェクト名)<IteratorT>(Itr,Itr)' を呼び出すためにいくつかの const または volatile 修飾子を失う可能性があります。

セマンティックアクション関数,またはセマンティックアクション関数オブジェクトを文法クラスの内側で宣言するときに const を付け忘れていませんか?文法クラスの内側で定義されるセマンティックアクション関数や関数オブジェクトの operator () は const 宣言しなければなりません.


[an error occurred while processing this directive]Copyright 2004- TAKAHASHI Daisuke (130km/h Software)
Mail :