我有一个设计问题。在我的应用程序中,我有几个类要使用std::shared_ptr
. 我们想要强制这些类应该由我们std::shared_ptr
唯一的创建。因此,我们考虑做类似的事情:
template <typename T>
class make_sharable_only
{
make_sharable_only();
~make_sharable_only();
public:
template <typename ...Args>
static std::shared_ptr<T> CreateShareInstance(Args ...args)
{
std::shared_ptr<T> ptr;
ptr.reset(new T(args...));
return ptr;
}
};
class A: public make_sharable_only<A>
{
};
void f()
{
auto aPtr = A::CreateShareInstance();
}
但是,问题是甚CreateShareInstance
至无法创建 A 的实例。我不想创建friend
关系。有没有办法为此目的定义这样的基类?
提前致谢。