gpt4 book ai didi

c++ - 当前对象的访问类

转载 作者:太空狗 更新时间:2023-10-29 20:56:23 27 4
gpt4 key购买 nike

我正在实现一个 virtual clone() 方法,除了返回对象的“实际”类型外,它可以完全相同,而且我意识到会有很多复制。例如,这是我想避免的明显解决方案:

AbstractVehicle* ConcreteCar::clone() const
{
auto c = new ConcreteCar;
c->setSomething(this->getSomething());
return c;
}

AbstractVehicle* ConcreteJet::clone() const
{
auto j = new ConcreteJet;
j->setSomething(this->getSomething());
return j;
}

这就是我想要的:

AbstractVehicle* AbstractVehicle::clone() const
{
auto v = new this->ACTUAL_CLASS;
v->setSomething(this->getSomething());
return v;
}

有什么简单的方法可以做到这一点?如果不是,我很想知道为什么会这样,因为天真地说,与动态调度之类的东西相比,实现起来似乎更具挑战性。

最佳答案

没有。 operator new 要求在编译时指定它正在创建的对象的类型。您所要求的要求要创建的对象类型在编译时未知,并在运行时计算(或以其他方式获得)。

关于c++ - 当前对象的访问类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33714506/

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