gpt4 book ai didi

c++ - dynamic_cast inside 派生构造函数

转载 作者:行者123 更新时间:2023-11-28 02:36:29 25 4
gpt4 key购买 nike

我有一个基类和派生类,还有一个 BaseType 和 DerivedType。在基类上我有一个 BaseType 的对象(不是指针)。我希望 Derived 类的构造函数执行从 BaseType 到 DerivedType 的动态转换。

class DerivedType: public BaseType{};

class Base{
BaseType basetype; //not a pointer
}

class Derived : public Base{
Derived(){
//I want to do in this constructor a dynamic_cast from
// "basetype" to "DerivedType"
// when "DerivedType" inherits from "BaseType" also
}
};

我有两个类 class DerivedType: public BaseType class Derived : public Base

Base 类上,我有一个 BaseType 的对象(不是指针)

我需要在 Derived 类的构造函数中将此对象的类型更改为 DerivedType 我的老板告诉我使用 dynamic_cast

我需要这样做,因为如果我要使用 class C : public Derived

当我使用“basetype”时,它将自动为 DerivedType 而不是 BaseType

最佳答案

您不能更改成员basetype的类型,无论是使用dynamic_cast还是任何其他方式。
如果你的老板告诉你这样做,他们要么是大错特错,要么没有足够清楚地传达你应该做什么。我建议您要求澄清。

一种常见的实现方法(即类型依赖于子类的成员)是将基类转换为模板,将成员的类型作为参数传递:

template<typename MemberType = BaseType>  // Default type is BaseType
class Base{
MemberType something;
}

class Derived : public Base <DerivedType>
{
Derived()
{
// 'something' has type DerivedType
}
};

关于c++ - dynamic_cast inside 派生构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27251856/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com