递归模板:object <auto_ptr <object>&gt;

时间:2015-12-11 06:39:02

标签: c++

我希望对象的指针(或句柄)可以自定义。 所以我有时候可以选择使用一个指针,它可以像一个带有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;
}

1 个答案:

答案 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>>();