与dynamic_cast相反的操作

时间:2017-09-16 14:42:19

标签: c++ inheritance dynamic-cast

我有一个基类和派生类,例如:

class Base {
 public:
  Base();
  virtual doSomthing();
};

class Derivative : class Base {
 public:
  Derivative();
  virtual doSomthing();
};

我知道如果我想在运行时从父亲改为儿子,我会做

Derivative& newDer = dynamic_cast<Derivative&>(baseInstance)

我的问题是我如何做相反的操作 - 从儿子变成父亲?

1 个答案:

答案 0 :(得分:2)

不需要特定的施法操作。如果Derivative&真的有这样的关系,那么Base&会自动传递class Derivative : public Base { // ^^^^^^ public: Derivative(); virtual doSomthing(); };

public

假设您尝试从全局private范围执行此操作。

  

我的问题是我如何做相反的操作 - 从儿子变为父亲?

继承关系需要在使用的范围内访问。您的示例具有public继承,并且在Derivative范围内无效。

As mentioned by @StoryTeller@Peter它将在friend内部类范围内使用任何类成员函数或git clone https://github.com/seomoz/simhash-py.git cd simhash-py git submodule update --init --recursive ed函数/类。