[英]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.