fix inheritance conflict loop by declaring a singular root for class EngineObject : public StrongRefBase

This commit is contained in:
AzaezelX 2024-03-18 22:39:18 -05:00
parent 8dc3163fae
commit 2e25059b27

View file

@ -282,6 +282,28 @@ class EngineObject;
template< typename T > friend struct ::_SCOPE; \
template< typename T > friend T* _CREATE(); \
template< typename T, typename Base > friend class ::EngineClassTypeInfo; \
private: \
typedef ::_Private::_AbstractClassBase< ThisType > _ClassBase; \
static EngineClassTypeInfo< ThisType, _ClassBase > _smTypeInfo; \
static EngineExportScope& __engineExportScope(); \
static EnginePropertyTable& _smPropertyTable; \
const EngineTypeInfo* __typeinfo() const override; \
public:
/// Declare an abstract base class @a type derived from the class @a super.
///
/// Nearly identical to DECLARE_ABSTRACT_CLASS macro, but with virtual methods
/// that are suppose to be override'd in child classes.
///
/// @see DECLARE_ABSTRACT_CLASS
#define DECLARE_ABSTRACT_BASE_CLASS(type) \
public: \
typedef type ThisType; \
typedef void SuperType; \
template< typename T > friend struct ::_EngineTypeTraits; \
template< typename T > friend struct ::_SCOPE; \
template< typename T > friend T* _CREATE(); \
template< typename T, typename Base > friend class ::EngineClassTypeInfo; \
private: \
typedef ::_Private::_AbstractClassBase< ThisType > _ClassBase; \
static EngineClassTypeInfo< ThisType, _ClassBase > _smTypeInfo; \
@ -504,7 +526,7 @@ class EngineObject : public StrongRefBase
{
public:
DECLARE_ABSTRACT_CLASS( EngineObject, void );
DECLARE_ABSTRACT_BASE_CLASS( EngineObject );
DECLARE_INSCOPE( _GLOBALSCOPE );
DECLARE_INSTANTIABLE;