私はこれらのライブラリを使用したことはありませんが、FLTK のチュートリアルは常に、ルート名前空間using namespace fltk;
を含むすべての FLTK クラスをインポートするステートメントで始まることがわかりました。fltk::Window
B. Stroustrup によるライブラリは、 という名前空間に含まれGraph_lib
ており、 というクラスも持っていWindow
ます。これで、ファイルの先頭Simple_window.h
にusing namespace Graph_lib;
ステートメントがありGraph_lib::Window
、ルート名前空間にインポートされます。そして、これが曖昧さの原因です。
したがって、using
(少なくとも からusing namespace fltk
) ステートメントを省略し、完全な仕様を持つ FLTK クラスを使用することをお勧めします (たとえばfltk::Window
、 だけではなくWindow
)。これで曖昧さが解消されるはずです。
補足として、これは良い例ですusing namespace
。ヘッダー ファイルにファイル レベルで含めるのはよくない考えです。
参考文献:
http://www.fltk.org/doc-2.0/html/index.html
http://www.stroustrup.com/Programming/Graphics/Simple_window.h
編集:私は自分自身を含むライブラリをコンパイルしようとしましたがSimple_window
、少なくともLinuxでは、ライブラリのクラスとxlibのGraph_lib::Window
typedefの間にあいまいさがあるようです。Window
xlib は C ライブラリであり、実際には何もできないためusing namespace Graph_lib
、Stroustup のライブラリで削除する必要があります。
ファイル内Simple_window.h
:
- 消去
using namespace Graph_lib;
Window
に変更Graph_lib::Window
Button
にGraph_lib::Button
- そして
Address
_Graph_lib::Address
次に、ファイルでSimple_window.cpp
:
- 再び変更
Address
_Graph_lib::Address
- そして
reference_to<Simple_window>
_Graph_lib::reference_to<Simple_window>
次に、コンパイルする必要があります。stroustrup.com にあるバージョンとは異なるバージョンを使用している場合は、Graph_lib::
さらにクラスを完全に修飾 (追加) する必要がある場合があります。