嵌套的抽象类和返回的抽象类
Nested Abstract class and returning abstract class
我正在为我的算法创建一个接口。
我有一个基本抽象类和两个派生类。在基本抽象类内部,它有第二个抽象类。在基派生类中,每个类都有第二个派生类。
结构如下:
class Engine {
public:
class EngineStatus {
// abstract class
...
};
Engine(){};
virtual ~Engine();
virtual std::vector<EngineStatus*> getStatus() = 0;
private:
std::vector<EngineStatus> m_status;
};
// Derived class
class OneEngine : public Engine {
public OneEngineStatus : public EngineStatus {
// Derived class
...
};
...
std::vector<EngineStatus*> getStatus()
{
return m_status; // Compiler error...
}
};
// Derived class
class AnotherEngine : public Engine {
public AnotherEngineStatus : public EngineStatus {
// Derived class
...
};
...
std::vector<EngineStatus*> getStatus()
{
return m_status; // Compiler error...
}
};
Engine* myEngine;
std::vector<Engine::EngineStatus*> status = myEngine->getStatus();
我如何才能做到这一点,或者有更好的方法吗?
我看到您的问题,成员m_status的类型是std::vector<EngineStatus>
,但您的方法签名返回类型std::vector<EngineStatus*>
。因此,您必须将m_status更改为std::vector<EngineStatus*>
类型,然后让它保留指针。
相关文章:
- 无法创建抽象类的实例
- 用pybind11包装C++抽象类时出错
- 如何处理从一个对象传递到另一个在C++中具有公共抽象类的对象的消息
- C++ 为什么要返回对基抽象类的引用
- C :如何在此抽象类的方法中返回抽象类
- 如何在代码中创建抽象类,让蓝图扩展它,并将该蓝图返回给代码进行实例化?
- 如何返回从抽象类得出的类的对象
- 返回虚拟函数的静态成员,对于抽象类缺少VT
- 如何使用 C++ 返回抽象类
- 功能签名返回抽象类
- 返回对抽象类的引用的模板运算符
- 我们是否有更好的方法来返回C++中的抽象类
- 不能实例化抽象类的对象,但必须返回该类的对象
- 返回抽象类的实例而不进行切片
- C++方法返回指向抽象类的指针,需要使用来自子类的方法
- 嵌套的抽象类和返回的抽象类
- 如何在抽象类中创建一个允许返回任何类型的c++虚函数
- 抽象类:成员函数virtual..的抽象返回类型无效
- 返回指向抽象类的指针的c++函数
- 需要解决的限制:抽象类不能用于返回类型