与 dynamic_cast 相反的操作
opposite operation to dynamic_cast
我有一个基数 class 和导数 class,例如:
class Base {
public:
Base();
virtual doSomthing();
};
class Derivative : class Base {
public:
Derivative();
virtual doSomthing();
};
我知道如果我想在运行时从父亲更改为儿子我会做
Derivative& newDer = dynamic_cast<Derivative&>(baseInstance)
我的问题是如何做相反的操作-
从儿子变爸爸?
不需要特定的转换操作。任何 Derivative&
都可以自动传递给 Base&
,如果它们确实具有像
中那样的关系
class Derivative : public Base {
// ^^^^^^
public:
Derivative();
virtual doSomthing();
};
假设您试图从全球 public
范围内做到这一点。
my question is how I can do the opposite operation - change from son to the father?
继承关系需要在使用的范围内访问。您的示例具有 private
继承,并且它不会在 public
范围内工作。
and 它将在 Derivative
内部 class 范围内与任何 class 成员函数或 friend
ed function/class 一起工作。
我有一个基数 class 和导数 class,例如:
class Base {
public:
Base();
virtual doSomthing();
};
class Derivative : class Base {
public:
Derivative();
virtual doSomthing();
};
我知道如果我想在运行时从父亲更改为儿子我会做
Derivative& newDer = dynamic_cast<Derivative&>(baseInstance)
我的问题是如何做相反的操作- 从儿子变爸爸?
不需要特定的转换操作。任何 Derivative&
都可以自动传递给 Base&
,如果它们确实具有像
class Derivative : public Base {
// ^^^^^^
public:
Derivative();
virtual doSomthing();
};
假设您试图从全球 public
范围内做到这一点。
my question is how I can do the opposite operation - change from son to the father?
继承关系需要在使用的范围内访问。您的示例具有 private
继承,并且它不会在 public
范围内工作。
Derivative
内部 class 范围内与任何 class 成员函数或 friend
ed function/class 一起工作。