設計上の問題があります。私のアプリケーションでは、 で管理するクラスがいくつかあります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();
}
しかし、問題は、A のインスタンスを作成することさえできないことです。関係CreateShareInstance
を作成したくありません。friend
この目的のためにそのような基本クラスを定義する方法はありますか?
前もって感謝します。