这种情况甚至可能吗?

class Base
{
  int someBaseMemer;
};

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

  Derived(T* baseInstance);
};

目标:
Base* pBase = new Base();
pBase->someBaseMemer = 123; // Some value set
Derived<Base>* pDerived = new Derived<Base>(pBase);

pDerived-> someBaseMemer的值应等于pBase-> someBaseMember并与其他基本成员相似。

最佳答案

您为什么不真正完成编写和编译代码?

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
};

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

编辑:或者您是说someNonBaseMemer应该等于someBaseMemer吗?

关于c++ - 在不知道类成员的情况下从基类实例创建派生类实例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2344910/

10-14 07:59