From: Vadim Zeitlin <vadim@wxwidgets.org>
Date: Thu, 9 Jul 2009 21:39:29 +0000 (+0000)
Subject: fix MSVC compilation: as string literals are of non-const char* type with this compil... 
X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/c279530ba9bfe4ca327cbc9bdf882ea98ed9e06e

fix MSVC compilation: as string literals are of non-const char* type with this compiler, they are implicitly convertible to void* resulting in overloading ambiguities with wxLogger::Log()

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61365 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
---

diff --git a/include/wx/log.h b/include/wx/log.h
index 4e93626680..c45f66ddec 100644
--- a/include/wx/log.h
+++ b/include/wx/log.h
@@ -82,6 +82,8 @@ typedef unsigned long wxLogLevel;
 // forward declarations
 // ----------------------------------------------------------------------------
 
+class WXDLLIMPEXP_FWD_BASE wxObject;
+
 #if wxUSE_GUI
     class WXDLLIMPEXP_FWD_CORE wxFrame;
 #endif // wxUSE_GUI
@@ -819,10 +821,15 @@ public:
         DoLogWithNum, DoLogWithNumUtf8
     )
 
+    // unfortunately we can't use "void *" here as we get overload ambiguities
+    // with Log(wxFormatString, ...) when the first argument is a "char *" or
+    // "wchar_t *" then -- so we only allow passing wxObject here, which is
+    // ugly but fine in practice as this overload is only used by wxLogStatus()
+    // whose first argument is a wxFrame
     WX_DEFINE_VARARG_FUNC_VOID
     (
         Log,
-        2, (void *, const wxFormatString&),
+        2, (wxObject *, const wxFormatString&),
         DoLogWithPtr, DoLogWithPtrUtf8
     )
 
@@ -885,16 +892,16 @@ public:
                                (f1, wxFormatString(f2)))
 
     WX_VARARG_WATCOM_WORKAROUND(void, Log,
-                               2, (void *, const wxString&),
+                               2, (wxObject *, const wxString&),
                                (f1, wxFormatString(f2)))
     WX_VARARG_WATCOM_WORKAROUND(void, Log,
-                               2, (void *, const wxCStrData&),
+                               2, (wxObject *, const wxCStrData&),
                                (f1, wxFormatString(f2)))
     WX_VARARG_WATCOM_WORKAROUND(void, Log,
-                               2, (void *, const char *),
+                               2, (wxObject *, const char *),
                                (f1, wxFormatString(f2)))
     WX_VARARG_WATCOM_WORKAROUND(void, Log,
-                               2, (void *, const wchar_t *),
+                               2, (wxObject *, const wchar_t *),
                                (f1, wxFormatString(f2)))
 
     WX_VARARG_WATCOM_WORKAROUND(void, LogAtLevel,