我希望对象的指针(或句柄)可以自定义。 所以我有时候可以选择使用一个指针,它可以像一个带有ref计数的句柄,但在其他情况下只使用原始指针。
template <typename PointerType>
class object
{
public:
// but the PointerType do need the type it point to...
typename PointerType<object> _parent;
};
int main()
{
// i choose using shared_ptr as handle
// object<std::shared_ptr> a;
// object<std::shared_ptr> b;
// a._parent = &b;
// b._parent = nullptr;
// or a auto_ptr.......
// object<std::auto_ptr> a;
// object<std::auto_ptr> b;
// a._parent = &b;
// b._parent = nullptr;
}
答案 0 :(得分:0)
您需要模板模板参数:
template <template <typename...> PointerType>
class object
{
public:
PointerType<object> _parent;
};
使用类似于:
object<std::shared_ptr> a;
a._parent = std::make_shared<object<std::shared_ptr>>();