假设我有一个想要扩展最终用户类的行为的库。
我是否应该始终按照以下方式使用包装类:
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
};
我似乎记得一般建议是在这种情况下始终使用包装类,但想知道为什么会这样。因此,如果有人能详细说明,将不胜感激!