我做了一个复制构造函数,我试图初始化一个具有相同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。
答案 0 :(得分:3)
您的int_buffer::size
方法似乎不是const。它应该具有类似
std::size_t int_buffer::size() const;
原因是因为您要传递const int_buffer& rhs
,所以您不能从该对象调用任何非const方法。