所以总的来说,我有相当于
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/