无法将指针推回到向量中

以斯帖

我创建了一个名为的指针类p_pointer并创建了一个向量来保存p_pointer类型。但是,当我尝试使用该push_back功能时,它不起作用。我试图直接使用double*而不是,p_pointer (double)并且该push_back功能确实以这种方式工作。所以我的猜测是我的复制构造函数有问题?

template<class T>
class p_pointer{
private:
    T* cp;
    size_t* refptr;

public:
    //default constructor
    p_pointer() : cp(0), refptr(new size_t(1)){}

    //copy constructor
    p_pointer (p_pointer&s) : cp(s.cp), refptr(s.refptr){
        *++refptr;
    }

    //assignment operator
    p_pointer& operator=(const p_pointer& s){
        ++*s.refptr;
        //freeing the left hand size if it is the last one
        if(--*refptr == 0){
            delete cp;
            delete refptr;
        }
        cp = s.cp;
        refptr = s.refptr;
    }

    //other assignment operator
    p_pointer& operator=(T* s){
        if(--*refptr == 0){
            delete cp;
            delete refptr;
        }
        cp = s;
        refptr = new size_t(1);
    }

};


int main()
{
    p_pointer<double> temp;
    temp = new double(1);

    std::vector<p_pointer<double> > collection;
    collection.push_back(temp); //error at here
}
伊克列申科夫

您的“复制构造函数”实际上不是复制构造函数:

//copy constructor
p_pointer (p_pointer&s):cp(s.cp),refptr(s.refptr){
*++refptr;
}

它应该接受const ref,而不是ref

有效的复制构造函数是:

//copy constructor
p_pointer (const p_pointer&s):cp(s.cp),refptr(s.refptr){
*++refptr;
}

也有编译错误

//other assignment operator
p_pointer&operator=(T* s){ 

*this例如,它应该返回一些东西

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将结构的变量推回到向量中

来自分类Dev

无法将向量中的unique_ptr推回

来自分类Dev

一个简单的电话簿程序将联系人推回到向量中

来自分类Dev

无法推回包含指向向量的 ofstream 指针的类

来自分类Dev

将共享指针推回向量时发生错误

来自分类Dev

无法推回向量

来自分类Dev

C ++将向量推回向量

来自分类Dev

将项目推回向量中包含的向量时发生未处理的异常

来自分类Dev

将字符串推回对象向量

来自分类Dev

在C ++中删除并推回向量的元素

来自分类Dev

在没有对象的向量中推回对象

来自分类Dev

将char指针存储在向量中

来自分类Dev

如何将R值临时对象推回向量?

来自分类Dev

有没有一种方法可以将for循环中的多个变量推回向量中?

来自分类Dev

C ++按向量中的值推回字符串

来自分类Dev

链接列表推回操作中需要“后向指针”

来自分类Dev

如何使用ruby-git将标签推回到git repo?

来自分类Dev

增强:将指针存储到向量中的分布

来自分类Dev

如何将类指针存储在向量中?

来自分类Dev

将指针从库返回到应用

来自分类Dev

将指针向量转换为对象向量

来自分类Dev

C ++类向量推回错误

来自分类Dev

C ++类向量推回错误

来自分类Dev

创建并推回函数向量

来自分类Dev

将int array []或指向int array []的指针返回到C中的调用例程的函数

来自分类Dev

将较小长度的向量返回到已填充的向量

来自分类Dev

从C#调用C dll中的函数,该函数将某种类型的指针返回到函数指针

来自分类Dev

C语言如何将指针从函数返回到指针

来自分类Dev

无法推回Github