c++ - 如何返回抽象类指针指向的对象?

标签 c++ pointers methods abstract-class abstraction

所以总的来说,我有相当于

class A{
public:
    virtual void foo() const = 0;
};

class B : public A{
public:
    B(){};
    void foo() const override{
        //some code
    };
};

class C{
public:
    C(){};
    B someFunction();
private:
    A* x;
};
A* x;指向某个B对象,我需要someFuntion()返回x指向的对象。我试过只是做return *x,但这是行不通的。

最佳答案

取消引用之前,必须先将x转换为B

class C
{
public:
   C() {};
   B someFunction()
   {
      return *static_cast<B*>(x); // like this
   }
private:
   A* x = new B;
};
您还需要提供virtual ~A(),以免发生未定义的行为。
When to use virtual destructors?
class A 
{
public:
   virtual void foo() const = 0;
   virtual ~A() = default;
};

关于c++ - 如何返回抽象类指针指向的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62848060/

相关文章:

c++ - 调试断言失败! vector 下标超出范围 C++

Java:子字符串.匹配数字

javascript - 多个方法调用顺序回调的 meteor 模式

c++ - 在 QAbstractTableModel 中使用多个线程之间共享的数据

c++ - push_back vs emplace_back

c++ - 删除链表中的节点 - 段错误

c++ - 这两行指针如何执行?

检查指针是否指向 int 数组上的空白空间

python - 用 python 中的变量替换链式方法

c++ - 为什么作为类成员的重载运算符只能有一个参数