なぜそれらはconstではないのですか?
これは API の設計に欠陥があると思います。または、何か不足していますか?
UINT GetWidth();
UINT GetHeight();
...
対。
UINT GetWidth() const;
UINT GetHeight() const;
...
欠陥のある API 設計? C スタイルの C++ ヘッダー? 私たちにCStringをもたらしたチームから? いや、ありえない...
ただし、真剣に、Win32 API でのGoTWレベルの C++ の使用、または C スタイル ハンドルの基本的なラッパー以上のものを期待しないでください。Herb Sutter は、Microsoft ライブラリの設計を改善することよりも、.NET: C++ を開発することに忙殺されています。WTLは、Microsoft が最新の C++に到達するのを私が見たのと同じくらい近いものであり、それがかなりあいまいな存在につながっています。
言いにくい。私は同意しますが、おそらく実装に何かがあり、const
それらが. 現在はmutable
キーワードがありますが、この API よりも若いと思います。
const
あるいは、API の設計者は、キーワードに対して敵対的であり、物事を使いにくくするだけだと感じている (時には驚くほど大規模な、imo) C++ 開発者のグループに属しているのかもしれません。私は Windows の歴史家ではないので、何とも言えません。:)
厳密に言えば、あなたはおそらく正しいでしょう-変数はconstでなければなりません。
GdiplusC++ネイティブAPIについて話していると思います。このコードとGdiplusクラスの実装を調べると、ほとんどのコードがGdiplus Flat API関数(http://msdn.microsoft.com/en-us/library/ms533969 )の基本的なラッパーであることがわかります。 (VS.85).aspx)。これにより、コードをconst-correctにするのが難しくなる可能性があります...または(別のヒントとして)Microsoftは通常あまり現代的ではないC++です。
編集:Gdiplus :: Image :: GetWidth()(GdiPlusBitmap.h内)のコードを見ると、MSがconst修飾子を使用して多くの関数を実装するのは簡単でした。彼らはImage::GetType()でそれを行い、内部のコードはImage :: GetWidth()、Image :: GetHeight()とほとんど同じです。