簡體   English   中英

如何返回由抽象 class 指針指向的 object?

[英]How can i return an object pointed to by an abstract class pointer?

所以總結一下,我有一些相當於

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 object,我需要someFuntion()來返回 x 指向的 object。 我試過只做return *x但這不起作用。

在取消引用之前,您必須將x向下轉換為B

class C
{
public:
   C() {};
   B someFunction()
   {
      return *static_cast<B*>(x); // like this
   }
private:
   A* x = new B;
};

您還需要提供virtual ~A() ,不要有未定義的行為。 何時使用虛擬析構函數?

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

如果您知道x指向B object 然后先轉換它。

return *static_cast<B*>(x);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM