vendredi 1 mars 2019

How to populate interface for existing object?

I have an interface:

struct result {
  virtual ~result() = 0;
  virtual auto getName() -> std::string = 0;

  protected:
    result() = default;
    result(const result &) = default;
    auto operator=(const result &) -> result & = default;
}

and an implementation:

struct abstract_result : public result {
  auto getName() -> std::string override;
  std::string m_name;
}

I'm currently using an instance of abstract_result within my code to be populated by a number of algorithms but I want the end user to receive a pointer to the interface so I can hide the implementation.

How can I turn an instance of abstract_result into a std::unique_ptr<result>?

Aucun commentaire:

Enregistrer un commentaire