簡體   English   中英

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

[英]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*> ,然后將其保留在指針上。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM