【问题标题】:Build a wrapper-class for a pointer to pointer in c++在 C++ 中为指向指针的指针构建一个包装类
【发布时间】:2021-04-07 19:10:15
【问题描述】:

我正在尝试创建一个小型包装类,让我可以使用指向类似指针的指针 它只是一个普通的指针(只是为了方便)。 我想出了以下代码:

template<typename T>
    class PtrPtr
    {
    public:
        PtrPtr() = default;
        PtrPtr(const T** ptr) : m_ptr(ptr) {  }
        inline void operator =(const T** ptr) { m_ptr = ptr; }
        inline void operator =(T** ptr) { m_ptr = ptr; }

        inline operator T*() const { return (*m_ptr); }

        inline T** get() const { return m_ptr; }
    private:
        T** m_ptr;
    };

我认为运营商 inline operator T*() const { return (*m_ptr); } 会 可以像使用指向 T 的指针一样使用该类,但它似乎不起作用 当我尝试使用以下语法访问 T 的元素时:

PtrPtr<myStruct> ptr = function that returns a pointer to pointer to myStruct;
ptr->some member of myStruct; <-Gives an error
static_cast<myStruct*>(ptr)->some member of myStruct; <-works but obviously tedious syntax

请注意,当我专门将“PtrPtr ptr”转换为 T* 然后尝试访问它时 带有“->”-操作符的成员似乎可以工作。 如果可以在这里实现干净的语法有什么想法吗?

【问题讨论】:

  • -&gt; 是一个运算符,所以你也需要重载它
  • 非常感谢,它工作得很好,正是我想要的。

标签: c++ templates operator-overloading


【解决方案1】:

解决方案是让-&gt;-operator 过载。 This 线程解释了它是如何完成的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-12
    • 2011-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多