From: Vadim Zeitlin Date: Sat, 20 Sep 2003 18:34:57 +0000 (+0000) Subject: fix after patch 802882 X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/0ae0bb792b13e17c62610245111c3ce7bf254464 fix after patch 802882 git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@23748 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/ctrlsub.h b/include/wx/ctrlsub.h index fbe39dc4b9..d286d874f1 100644 --- a/include/wx/ctrlsub.h +++ b/include/wx/ctrlsub.h @@ -115,57 +115,40 @@ protected: wxClientDataType m_clientDataItemsType; }; +// this macro must (unfortunately) be used in any class deriving from both +// wxItemContainer and wxControl because otherwise there is ambiguity when +// calling GetClientXXX() functions -- the compiler can't choose between the +// two versions +#define wxCONTROL_ITEMCONTAINER_CLIENTDATAOBJECT_RECAST \ + void SetClientData(void *data) \ + { wxControl::SetClientData(data); } \ + void *GetClientData() const \ + { return wxControl::GetClientData(); } \ + void SetClientObject(wxClientData *data) \ + { wxControl::SetClientObject(data); } \ + wxClientData *GetClientObject() const \ + { return wxControl::GetClientObject(); } \ + void SetClientData(int n, void* clientData) \ + { wxItemContainer::SetClientData(n, clientData); } \ + void* GetClientData(int n) const \ + { return wxItemContainer::GetClientData(n); } \ + void SetClientObject(int n, wxClientData* clientData) \ + { wxItemContainer::SetClientObject(n, clientData); } \ + wxClientData* GetClientObject(int n) const \ + { return wxItemContainer::GetClientObject(n); } + class WXDLLEXPORT wxControlWithItems : public wxControl, public wxItemContainer { public: wxControlWithItems() { } virtual ~wxControlWithItems(); - + // we have to redefine these functions here to avoid ambiguities in classes // deriving from us which would arise otherwise because both base classses // have the methods with the same names - hopefully, a smart compiler can // optimize away these simple inline wrappers so we don't suffer much from // this - - void SetClientData(void *data) - { - wxControl::SetClientData(data); - } - - void *GetClientData() const - { - return wxControl::GetClientData(); - } - - void SetClientObject(wxClientData *data) - { - wxControl::SetClientObject(data); - } - - wxClientData *GetClientObject() const - { - return wxControl::GetClientObject(); - } - - void SetClientData(int n, void* clientData) - { - wxItemContainer::SetClientData(n, clientData); - } - - void* GetClientData(int n) const - { - return wxItemContainer::GetClientData(n); - } - - void SetClientObject(int n, wxClientData* clientData) - { - wxItemContainer::SetClientObject(n, clientData); - } - - wxClientData* GetClientObject(int n) const - { - return wxItemContainer::GetClientObject(n); - } + wxCONTROL_ITEMCONTAINER_CLIENTDATAOBJECT_RECAST private: DECLARE_NO_COPY_CLASS(wxControlWithItems)