2012-04-14 7 views
0

私はC++でWindows COMをプログラミングしています。多くの関数に接頭辞::が付いているので、グローバル名前空間のバージョンが呼び出されています。何故ですか?C++のWindows COMプログラミングで、非常に多くのメソッドがグローバルな名前空間に明示的に解決されているのはなぜですか?

名前空間との競合があるかもしれないと私は理解していますが、すべての機能が今や明示的に解決されなければならないような、

wStrLen = ::SysAllocStringLen(NULL, wStr); 
::SysFreeString(str); 
::CoTaskMemFree(item); 

そして他の多く:ここ

は、いくつかの私がよく見る例です。

プログラマが明示的に名前空間を解決することを選んだ理由は私だけパズル、なぜ彼らは書いていない:

wStrLen = SysAllocStringLen(NULL, wStr); 
SysFreeString(str); 
CoTaskMemFree(item); 

任意のアイデア?

答えて

1

いいえ、これはCOMプログラミングでは一般的ではなく、とにかく私が書いたり勉強したものではありません。 COM自体は、グローバル名前空間にほとんど名前を付け加えていません。ヘルパー関数はそれほど多くありません。 COMインターフェイスを実装する一般的な方法は、C++クラスを使用することです。モジュールの外部にすべて公開されないので、好きな名前空間に貼り付けることができます。私はそれがあなたが選んだコードを選んだチームだと思う。それを本で見た場合、それはあまりにも多くの手間をかけることなく、本のコードサンプルが既存のプログラムに落ちる可能性を高める良い方法です。それ以外は何も問題ありません。

+0

私のチームのコードで見ています。答えをありがとう! – bodacydo

+0

このようなチームコーディングガイドラインは珍しくありません。実際の問題に関連することは少なく、ちょうど "これが私たちのやり方です!"読みやすさは重要です。あなたはそれに従わなければなりません。 –

関連する問題