I am trying to encapsulate details of the Engine implementation class. To do that I am returning std::unique_ptr
of abstract class (IEngine
in my case) instead of Engine
. But I could not do that due to the compile error. I could return raw reference and it works but is that possible with unique_ptr
? Thanks in advance.
class IEngine
{
public:
virtual ~IEngine() = default;
virtual void Start() = 0;
};
class Engine : public IEngine
{
public:
void Start() override {}
};
class Car
{
std::unique_ptr<Engine> m_engine;
public:
std::unique_ptr<IEngine>& Get() { return m_engine; } // Here is compile error
};
int main()
{
Car lambo;
}
Aucun commentaire:
Enregistrer un commentaire