嵌套的抽象类和返回的抽象类

Nested Abstract class and returning abstract class

本文关键字:抽象类 返回 嵌套      更新时间:2023-10-16

我正在为我的算法创建一个接口。

我有一个基本抽象类和两个派生类。在基本抽象类内部,它有第二个抽象类。在基派生类中,每个类都有第二个派生类。

结构如下:

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*>类型,然后让它保留指针。