2009-03-11 2 views

Répondre

2

Difficile à dire. Je suis d'accord, mais il y a peut-être quelque chose dans l'implémentation qui les empêche d'être const, et qu'ils ne voulaient pas ajouter de surcharge à cacher. Aujourd'hui, nous avons le mot-clé mutable, mais je pense que c'est plus jeune que cette API.

Ou peut-être que les concepteurs de l'API appartiennent au groupe de développeurs C++ (parfois choquant de taille, imo) qui sont hostiles au mot-clé const, estimant que cela rend les choses plus difficiles à utiliser. Je ne suis pas un historien de Windows, donc je ne peux pas vous le dire. :)

+0

Bien, certains ont un modificateur const: Image :: GetType() const –

4

Conception d'API imparfaite? En-têtes C++ de style C? Des équipes qui nous ont apporté CString? Nah, ne peut pas être ...

Sérieusement, cependant, ne vous attendez pas GoTW -utiliser C++ niveau dans toute API Win32, ou plus d'un encapsuleur de base autour des poignées de style C. Herb Sutter a été occupé avec .NET: ing C++ plutôt que d'améliorer la conception de la bibliothèque Microsoft. Le WTL est aussi proche que j'ai vu Microsoft venir à modern C++, et cela a mené une existence plutôt obscure.

1

Strictement parlant, vous avez probablement raison - la variable devrait être const.

Je suppose que vous parlez de l'API native Gdiplus C++. Si vous regardez dans l'implémentation de ce code et les classes Gdiplus vous trouverez que la majeure partie du code est un wrapper de base autour des fonctions Gdiplus Flat API (http://msdn.microsoft.com/en-us/library/ms533969(VS.85).aspx). Cela peut rendre difficile la création du code const-correct ... ou (comme d'autres l'ont laissé entendre) c'est Microsoft qui n'est généralement pas très moderne-C++.

EDIT: En regardant le code pour Gdiplus :: Image :: GetWidth() (dans GdiPlusBitmap.h), il aurait été facile pour MS d'implémenter la plupart des fonctions avec le modificateur const. Ils l'ont fait avec Image :: GetType() et le code à l'intérieur est à peu près identique à Image :: GetWidth(), Image :: GetHeight().

+0

Re: EDIT Exactement. J'ai eu WTF constant en lisant le code source GDI + –

Questions connexes