added wxSUPPRESS_GCC_PRIVATE_DTOR_WARNING macro
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36308 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -243,6 +243,7 @@ the corresponding topic.
|
||||
\helpref{wxStringTokenize}{wxstringtokenize}\\
|
||||
\helpref{wxStripMenuCodes}{wxstripmenucodes}\\
|
||||
\helpref{wxStrlen}{wxstrlen}\\
|
||||
\helpref{wxSUPPRESS\_GCC\_PRIVATE\_DTOR\_WARNING}{wxsuppress\_gcc\_private\_dtor\_warning}\\
|
||||
\helpref{wxSysErrorCode}{wxsyserrorcode}\\
|
||||
\helpref{wxSysErrorMsg}{wxsyserrormsg}\\
|
||||
\helpref{wxT}{wxt}\\
|
||||
@@ -3177,6 +3178,36 @@ as a keyboard shortkey in Windows and Motif) and $\backslash$t (tab in Windows).
|
||||
<wx/utils.h>
|
||||
|
||||
|
||||
\membersection{wxSUPPRESS\_GCC\_PRIVATE\_DTOR\_WARNING}{wxsuppress\_gcc\_private\_dtor\_warning}\\
|
||||
|
||||
\func{}{wxSUPPRESS\_GCC\_PRIVATE\_DTOR\_WARNING}{\param{}{name}}
|
||||
|
||||
GNU C++ compiler gives a warning for any class whose destructor is private
|
||||
unless it has a friend. This warning may sometimes be useful but it doesn't
|
||||
make sense for reference counted class which always delete themselves (hence
|
||||
destructor should be private) but don't necessarily have any friends, so this
|
||||
macro is provided to disable the warning in such case. The \arg{name} parameter
|
||||
should be the name of the class but is only used to construct a unique friend
|
||||
class name internally. Example of using the macro:
|
||||
|
||||
\begin{verbatim}
|
||||
class RefCounted
|
||||
{
|
||||
public:
|
||||
RefCounted() { m_nRef = 1; }
|
||||
void IncRef() { m_nRef++ ; }
|
||||
void DecRef() { if ( !--m_nRef ) delete this; }
|
||||
|
||||
private:
|
||||
~RefCounted() { }
|
||||
|
||||
wxSUPPRESS_GCC_PRIVATE_DTOR(RefCounted)
|
||||
};
|
||||
\end{verbatim}
|
||||
|
||||
Notice that there should be no semicolon after this macro.
|
||||
|
||||
|
||||
\membersection{wxULL}\label{wxull}
|
||||
|
||||
\func{wxLongLong\_t}{wxULL}{\param{}{number}}
|
||||
|
@@ -88,6 +88,19 @@
|
||||
# pragma warn -inl /* Functions containing reserved words and certain constructs are not expanded inline */
|
||||
#endif /* __BORLANDC__ */
|
||||
|
||||
/*
|
||||
g++ gives a warning when a class has private dtor if it has no friends but
|
||||
this is a perfectly valid situation for a ref-counted class which destroys
|
||||
itself when its ref count drops to 0, so provide a macro to suppress this
|
||||
warning
|
||||
*/
|
||||
#ifdef __GNUG__
|
||||
# define wxSUPPRESS_GCC_PRIVATE_DTOR_WARNING(name) \
|
||||
friend class wxDummyFriendFor ## name;
|
||||
#else /* !g++ */
|
||||
# define wxSUPPRESS_GCC_PRIVATE_DTOR_WARNING(name)
|
||||
#endif
|
||||
|
||||
/* ---------------------------------------------------------------------------- */
|
||||
/* wxWidgets version and compatibility defines */
|
||||
/* ---------------------------------------------------------------------------- */
|
||||
|
Reference in New Issue
Block a user