2009-03-11 12 views

答えて

2

言うのは難しいです。私は同意するだろうが、実装にはconstであることを防ぐ何かがあり、隠すためにオーバーヘッドを追加したくないと思うかもしれない。今はmutableというキーワードがありますが、このAPIより若いと思います。

APIのデザイナーは、constというキーワードに敵対しているC++開発者の(時には驚くほど大きく、imoの)束に属していて、使いにくいと感じているかもしれません。私はWindowsの歴史家ではないので、私はあなたに話すことができません。 :)

+0

まあ、いくつかはconst修飾子を持っています:Image :: GetType()const –

4

欠陥のあるAPIデザイン? CスタイルのC++ヘッダ?私たちを持って来たチームからCString?いいえ、できません...

真実ではありませんが、GoTW-C++スタイルのハンドルの周りの基本的なラッパー以上のレベルC++の使用。 Herb Sutterは、Microsoftのライブラリ設計を改善するのではなく、.NET:C++で忙しく働いています。 WTLは、マイクロソフトがmodern C++に来ているのと同じくらい近くにあり、それはむしろあいまいな存在になっています。

1

厳密に言えば、おそらく正しいでしょう。変数はconstでなければなりません。

私はあなたがGdiplus C++ネイティブAPIについて話していると仮定しています。このコードとGdiplusクラスの実装を調べると、ほとんどのコードがGdiplus Flat API関数(http://msdn.microsoft.com/en-us/library/ms533969(VS.85).aspx)の基本ラッパーであることがわかります。これにより、コードをconst-correctにするのが難しくなるかもしれません。あるいは、(別のことを示唆しているように)Microsoftが典型的にはC++ではありません。

EDIT:Gdiplus :: Image :: GetWidth()(GdiPlusBitmap.h内)のコードを見ると、MSはconst修飾子を使用して多くの関数を実装するのは簡単でした。彼らはImage :: GetType()でそれをやったことがあり、内部のコードはImage :: GetWidth()、Image :: GetHeight()とほとんど同じです。

+0

Re:EDIT 正確に。私はGDI +のソースコードを読んでいる間、一定のWTFを持っていました –

関連する問題