gpt4 book ai didi

C++ : copy constructor that uses a function with non-const parameters

转载 作者:太空宇宙 更新时间:2023-11-04 16:04:50 27 4
gpt4 key购买 nike

我需要像这样为我的类 Immagine 创建一个复制构造函数:

Immagine::Immagine(Immagine& i)
{
...
}

显然,当我尝试调用它时,我有类似的东西: 错误:从“Immagine”类型的右值对“Immagine&”类型的非常量引用进行无效初始化,因为我会将其声明为:

Immagine::Immagine(const Immagine& i)
{
...
}

但我做不到,因为要初始化一个 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);
}

function dlib::assign_image(dst,src) 是一个包函数,将 src 复制到 dst 但没有声明 constsrc 参数,所以如果我将 i 声明为 const 我得到一个错误......我该如何解决这个问题?

最佳答案

假设您不能更改 dlib::assign_image() 以采用 const Immagine,并且您确定它实际上不会更改任何内容,那么我会使用 const_casti 中删除 const-ness。

一般来说,如果您有其他选择,最好不要使用 const_cast,但是 IMO const_cast 最好在调用不正确的遗留代码时使用,但是你的代码是。

关于C++ : copy constructor that uses a function with non-const parameters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37308386/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com