WTL を使い始めてコーディングをしていたりするのですが、そうなると必然的に ATL を #include する必要が出てきます。 まぁ、ATL自体は私自身興味があったので拒否はしませんし、 #include するだけというお手軽設計のようなので、この点は特に問題ありません。 というか、手軽に強力なライブラリが使えて逆に高感度高しです。(笑
で、この状態でサクサクとコードを打っていたのですが… この辺の人 から貰ったコードの中にあった "CCriticalSection"
というクラスが "ATL::CCriticalSection"
と被るとエラーが出てしまう。 …はて?
ATL は namespace で囲ってあるから別に被らないような気がするんだけれど、何でだろうk
-- atlbase.h / line 5869 *1 #ifndef _ATL_NO_AUTOMATIC_NAMESPACE using namespace ATL; #endif //!_ATL_NO_AUTOMATIC_NAMESPACE
お前なにやっとんじゃああああああああーーーーーーーーー!!
よりによって、ヘッダーで using namespace かよ! いやまぁ、プリプロセッサで無効に出来るとはいえ、デフォで全部グローバルに持ってくる仕様はヤヴァイじゃろうにぃぃーーー!!
こんなワナが待ち構えている ATL ですが、このツンデレっぷり で高感度が上がりました。(何
…しかし、今回、今まで話にしか聞かなかった 「複数のライブラリで名前が被ってしまう問題」 を体験させていただきましたわ。 やっぱり (自分の含め)各ライブラリは独自の namespace で囲った方が良いですね。
…まぁ、そもそも、大抵の機能は ATL にあるので、ライブラリ自作しなくていいんじゃね?とかいう気がしないでもないんですが…(ぉ ^^;
*1:!?