我正在为我的算法创建一个界面。
我有一个基本抽象类和两个派生类。 在基本抽象类中,它有第二个抽象类。 在基类派生类中,每个类都有第二个派生类。
结构如下所示:
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();
我怎样才能做到这一点,或者有更好的方法吗?
答案 0 :(得分:0)
我看到你的问题,成员m_status的类型为std::vector<EngineStatus>
,但你的方法签名返回类型std::vector<EngineStatus*>
。因此,您必须将m_status更改为std::vector<EngineStatus*>
类型,然后将其保留为指针。