试图创建一个复制构造函数,我该如何解决这个问题?

Trying to create a copy-constructor, how can i fix this problem?

我已经制作了一个复制构造函数,我正在尝试初始化一个与 rhs 大小相同的缓冲区,但我收到了一个错误。我希望借助 class.

中的 size() 函数创建一个与 rhs 大小相同的容器
int_buffer::int_buffer(const int_buffer& rhs): ptr_begin(new int[rhs.size()]){
    std::cout << "Copy Constructor running..." << '\n';
    std::copy(rhs.begin(), rhs.end(), begin());
}

尺码

size_t int_buffer::size(){
    return ptr_end - ptr_begin;
}

我收到的错误是: 该对象具有与成员函数不兼容的类型限定符 "int_buffer::size" 对象类型为:const int_buffer.

解决方案

size_t int_buffer::size() const{
    return ptr_end - ptr_begin;
}

我的问题的解决方案是我的大小函数不是常量。

看起来你的 int_buffer::size 方法不是常量。它应该有一个像

这样的签名
std::size_t int_buffer::size() const;

原因是因为你正在传递 const int_buffer& rhs 所以你不能从该对象调用任何非常量方法。