试图创建一个复制构造函数,我该如何解决这个问题?
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
所以你不能从该对象调用任何非常量方法。
我已经制作了一个复制构造函数,我正在尝试初始化一个与 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
所以你不能从该对象调用任何非常量方法。