At least that compiles again. But it is still not very satisfactory.
The fact, that a ctor of an abstract base class has been called not via a ctor of a derived class remains suspicious. In addition to that I am not sure how to check, whether everything still works as expected.
And it is a macro. Surely, in this legacy code macros are still abundant and will stay proably forever. Yet in this case we could replace it by c++11 using, so that the compiler sees it and can protect us better from errors:
using wxParentProperty = wxBoolProperty;
This should work platform independent even on older compilers where these are still the only way to compile cb (supported from g++-4.7, clang++-3.0, MSVC 2013).
The block where this line can be changed contains 3 similar defines which currently work but IMHO can be changed as well to:
#if wxCHECK_VERSION(3, 0, 0) || wxCHECK_PROPGRID_VERSION(1, 4, 0)
using wxPGVariant = wxVariant;
#define wxPGId wxPGProperty*
using wxParentProperty = wxBoolProperty;
using wxCustomPropertyClass = wxPGProperty;
using wxEnumPropertyClass = wxEnumProperty;
#define wxPG_VALUETYPE(T) wxT(#T)
#define wxPGVariantToWxObjectPtr(A,B) wxDynamicCast(A.GetWxObjectPtr(),B)
#define wxPG_PROP_UNSPECIFIED wxPG_EX_AUTO_UNSPECIFIED_VALUES
#define NEW_IN_WXPG14X new
#else
#define NEW_IN_WXPG14X
#endif
Any objections? Can and should this be committed after it has been tested?