0

假设我有一个想要扩展最终用户类的行为的库。

我是否应该始终按照以下方式使用包装类:

template<typename T>
struct wrapper
{
  std::unique_ptr<T> wrapped_object;
  T* operator->() {return wrapped_object.get();}
  // other stuff
};

或者从用户的类继承是否安全,即:

template<typename T>
struct wrapper : public T
{
  wrapper(auto&&... args) : T{args...} {}
  // functionality
};

我似乎记得一般建议是在这种情况下始终使用包装类,但想知道为什么会这样。因此,如果有人能详细说明,将不胜感激!

4

0 回答 0