在不知道类成员的情况下从基类实例创建派生类实例

Aoi*_*asu 5 c++ inheritance templates visual-c++

这种情况甚至可能吗?

class Base
{
  int someBaseMemer;
};

template<class T>
class Derived : public T
{
  int someNonBaseMemer;

  Derived(T* baseInstance);
};
Run Code Online (Sandbox Code Playgroud)

目标:

Base* pBase = new Base();
pBase->someBaseMemer = 123; // Some value set
Derived<Base>* pDerived = new Derived<Base>(pBase);
Run Code Online (Sandbox Code Playgroud)

pDerived-> someBaseMemer的值应该是pBase-> someBaseMember的equeal,与其他基本成员类似.

MSN*_*MSN 3

你为什么不真正完成代码的编写和编译呢?

class Base 
{ 
public: // add this
    int someBaseMemer; 
}; 

template<class T> 
class Derived : public T 
{ 
public: // add this
    int someNonBaseMemer; 

    Derived(T* baseInstance)
        : T(*baseInstance) // add this
    { return; } // add this
}; 
Run Code Online (Sandbox Code Playgroud)

这将按照您指定的方式编译并运行。

编辑:或者你的意思是someNonBaseMemer应该等于someBaseMemer