vol*_*ssa 0 c++ constructor const copy-constructor
我需要为我的类创建一个复制构造函数,Immagine如下所示:
Immagine::Immagine(Immagine& i)
{
...
}
Run Code Online (Sandbox Code Playgroud)
很明显,当我试着打电话时,我有类似的东西:
error: invalid initialization of non-const reference of type ‘Immagine&’ from an rvalue of type ‘Immagine’因为我会声明它:
Immagine::Immagine(const Immagine& i)
{
...
}
Run Code Online (Sandbox Code Playgroud)
但我无法做到这一点,因为,为了对一个Immagine成员对象进行初始化,我使用了一个函数
Immagine::Immagine(const Immagine& i)
{
dlib::array2d<dlib::rgb_pixel>& r=i.v; //v is a member of type dlib::array2d<dlib::rgb_pixel>
dlib::assign_image(this->dlib_immagine,r);
}
Run Code Online (Sandbox Code Playgroud)
功能dlib::assign_image(dst,src)是封装功能,并复制src到dst,但没有被声明const为src参数,所以如果我声明i作为const我得到一个错误......我该如何解决这个问题?
假设您无法更改dlib::assign_image()为a const Immagine,并且您确定它实际上不会更改任何内容,那么我将使用const_cast从中移除const-ness i.
一般情况下,const_cast如果您有其他选项,最好不要使用,但const_cast最好在调用遗留代码时使用IMO ,但代码不是.