我在调用我设置的复制构造函数时遇到一些困难。
Image::Image(const Image& img) /* Copy constructor */
{
this->x = img.x;
this->y = img.y;
this->data = img.data;
}
我正在尝试使用 Image input = *new Image(GetInput());
调用它。 GetInput()
返回一个 Image*
。有什么方法可以使参数匹配吗?
最佳答案
这样做:
Image input = *new Image(GetInput());
导致即时内存泄漏,因为分配的内存无处存储。
如果 GetInput()
不是每次都分配返回的 Image
,你可以这样做:
Image input = *GetInput();
否则你最好使用一些智能指针:
std::unique_ptr<Image> input { GetInput() }; // C++11
auto input = std::make_unique<Image>(GetInput()); // C++1y / C++14
一个更好的解决方案是完全避免使用任何指针,但我想这超出了实际问题的范围......
此外,如果 Image::data
是一个动态分配的变量,如果您像在代码片段中那样简单地复制指针,将会遇到很多麻烦。
关于c++ - 没有已知的参数 1 从 ‘Image*’ 到 ‘const Image&’ 的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23900672/