尝试创建复制构造函数时,如何解决此问题?

时间:2018-11-14 16:50:37

标签: c++ copy-constructor

我做了一个复制构造函数,我试图初始化一个具有相同rhs大小的缓冲区,但是我遇到了一个错误。我希望借助类中的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;
}

我的问题的解决方案是我的size函数不是const。

1 个答案:

答案 0 :(得分:3)

您的int_buffer::size方法似乎不是const。它应该具有类似

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

原因是因为您要传递const int_buffer& rhs,所以您不能从该对象调用任何非const方法。