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

时间:2015-11-18 21:15:01

标签: c++ inheritance

我正在为我的算法创建一个界面。

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

结构如下所示:

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();

我怎样才能做到这一点,或者有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

我看到你的问题,成员m_status的类型为std::vector<EngineStatus>,但你的方法签名返回类型std::vector<EngineStatus*>。因此,您必须将m_status更改为std::vector<EngineStatus*>类型,然后将其保留为指针。