[英]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.