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

标签 c++ c++11

我正在实现一个 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/

相关文章:

c++ - 如何使 qtcreator 与 c++11 一起工作

c++ - 为什么 std::runtime_error 的 c'tor 需要对 std::string 的常量引用?

c++ - qt项目symbian os兼容性问题?

c++ - 如何在模板类中使用嵌套结构/类类型作为返回值?

c++ - 全局非抛出::operator new 和 std::malloc 之间的区别

c++ - 用于识别 C++11 关键字的 VI

c++ - 删除主类的对象指针是否也会删除嵌套类指针?

C++ 使用构造函数参数初始化成员数组

c++ - "Segmentation fault"在linux上实现intel MKL的DFT

c++ - 使用元组累加器减少推力