我正在为我的算法创建一个接口。
我有一个基本抽象类和两个派生类。在基类中,它有第二个抽象类。在基类中,每个类都有第二个派生类。
结构看起来如下:
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();我怎样才能做到这一点,或者有没有更好的方法来做到这一点?
发布于 2015-11-18 21:18:29
我看到了您的问题,成员m_status是std::vector<EngineStatus>类型,但是您的方法签名返回std::vector<EngineStatus*>类型。因此,您必须将m_status更改为std::vector<EngineStatus*>类型,然后让它保存指针。
https://stackoverflow.com/questions/33790516
复制相似问题