#pragma once template class TSubclassOf { class UClass* ClassPtr; public: TSubclassOf() = default; inline TSubclassOf(UClass* Class) : ClassPtr(Class) { } inline UClass* Get() { return ClassPtr; } inline operator UClass* () const { return ClassPtr; } template, bool>::type> inline operator TSubclassOf() const { return ClassPtr; } inline UClass* operator->() { return ClassPtr; } inline TSubclassOf& operator=(UClass* Class) { ClassPtr = Class; return *this; } inline bool operator==(const TSubclassOf& Other) const { return ClassPtr == Other.ClassPtr; } inline bool operator!=(const TSubclassOf& Other) const { return ClassPtr != Other.ClassPtr; } inline bool operator==(UClass* Other) const { return ClassPtr == Other; } inline bool operator!=(UClass* Other) const { return ClassPtr != Other; } };