基于以下代码,如何在我的“控制器”类中存储指向 Base 的指针?
template< class Derived >
class Base
{
public:
template < typename T >
void Serialise( T* t )
{
Derived* d = static_cast< Derived* >( this );
d->Serialise( t );
}
};
class Derived : public Base< Derived >
{
public:
template < typename T >
void Serialise( T* t )
{
printf( "serialising to object T\n" );
}
};
因此,如果我有一个 Controller 类,它将调用 Serialise 函数并传入要序列化的对象,我最终不得不存储具有已知派生类型的指针,因为它是对象类型的一部分,而我需要的是能够使用 Base 类型而不知道它的实际类型是什么:
class Controller
{
public:
void DoSerialise();
private:
Base< Derived >* m_myObject; // I want this to just be Base* m_myObject but cant due to template!
};