复制构造函数中的std :: copy出错

时间:2015-12-09 04:05:51

标签: c++ pointers copy copy-constructor

我正在编写自己的vector课程,只是为了了解内存管理的工作原理。我正在调用std::copy的类中唯一的位置是复制构造函数。

vector::vector(const vector& v)
        :sz{v.sz}, space{v.space}, elem{new double[sz]}
    {
        copy(v.elem, v.elem + v.sz, elem);
    }

其中sz(int)是向量的大小,space(int)是为向量保留的内存,elem(double *)是指向元素的指针。

当我致电std::copy时,我收到以下错误。

Error   C4996   'std::_Copy_impl': Function call with parameters that may be
unsafe - this call relies on the caller to check that the passed values are  
correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See  
documentation on how to use Visual C++ 'Checked Iterators'  Project2    
c:\program files (x86)\microsoft visual studio 14.0\vc\include\xutility 2230

我错过了一些事情,因为我没有传递正确的参数吗?

1 个答案:

答案 0 :(得分:2)

代码是正确的。显然,你正在使用一些时髦的编译器选项,将警告变成错误。警告说,copy的实施无法检查它是否已复制到目标数组的末尾。但是调用代码(你的拷贝构造函数)已经检查过了,所以调用没问题。