2016-12-16 8 views
0

を非推奨:wxWidgetsのは、私はwxWidgetsの3.0ライブラリ使用して、次のコードをコンパイルしようとしているコンストラクタ

がfoo.h

#ifdef __GNUC__ 
    #include <wx/version.h> 

    #if wxMAJOR_VERSION >= 3 
    #pragma GCC diagnostic push 
    #pragma GCC diagnostic ignored "-Wdeprecated-declarations" //< I'm trying to disable warning 
    #endif // wxMAJOR_VERSION >= 3 

#endif // __GNUC__ 

#ifdef HAVE_VARIADIC_MACROS 
    #undef HAVE_VARIADIC_MACROS //< this macro redefines in wx.h 
#endif // HAVE_VARIADIC_MACROS 

#include <wx/wx.h> //< deprecated constructor defined here 

#ifdef __GNUC__ 
    #pragma GCC diagnostic pop 
#endif // __GNUC__ 

foo.cpp

#include "foo.h" 
.... 
some_menu = new wxMenuItem(...); //< deprecated constructor 

定義されたコンストラクタをファイル内wx/menuitem.h coデ:

のgcc 5.4.0、Ubuntuの16.04 x86_64版でコンパイル
#if WXWIN_COMPATIBILITY_2_8 //< defined 
    // compatibility only, don't use in new code 
    wxDEPRECATED_CONSTRUCTOR(
    wxMenuItem(wxMenu *parentMenu, 
       int id, 
       const wxString& text, 
       const wxString& help, 
       bool isCheckable, 
       wxMenu *subMenu = NULL) 
    ); 
#endif 

g++ -o foo.os -c -I/usr/lib/x86_64-linux-gnu/wx/include/gtk2-unicode-3.0 -I/usr/include/wx-3.0 -D_FILE_OFFSET_BITS=64 -DWXUSINGDLL -D__WXGTK__ -g3 -Wall -Werror 
... 
foo.cpp:83:109: error: 'wxMenuItem::wxMenuItem(...)' is deprecated [-Werror=deprecated-declarations] 

私はそれをどのように修正することができますか?

答えて

0

推奨されていないctorの使用をやめるのが非常に簡単ですが、これはかなり簡単です。なぜそうではありませんか?

そうでなければ、私は(私はそれをテストしていない)あなたも、それは#pragma秒で動作させることができ、これはあるので、あなたは、このctorのを使用してあなたコードの周りにそれらを配置する必要があるだろうと考えています宣言の周りではなく、警告が生成されます。

最後に、完全性を確認するために、-Werrorを削除して警告メッセージを表示することもできますが、もちろんこれは最善の選択ではありません。

関連する問題