我们收到了这个头文件,要求我们重载=
和+
运算符,以便我们可以i3 = i1 + i2
。
由于某种原因,我的+
运算符没有返回一个完整的对象...它返回字符串就好了,但是整数返回-858993460。考虑到我为他们分配了一个值,这很奇怪。
这是我的+
运算符:
Image Image::operator+(Image const& image)
{
return image;
}
在我的=
运算符中,值传递给它,它会错误地显示int
:
const Image& Image::operator=(Image const& image)
{
cout << image.filename << endl; // Displays correctly
cout << "image x: " << image.size_x << ": " << image.get_size_x() << endl; // Displays incorrectly (-int)
这里我正在研究一个新对象,但它没有工作,所以我只是简单地传递了一个我知道已分配值的对象,它仍然面临着uninit int问题。无论我通过哪个对象,我都面临同样的问题。字符串没问题,但是整数似乎没有正确传递
答案 0 :(得分:3)
事实证明它是我的复制构造函数。我现在觉得很傻。
我所要做的就是在我的运算符中指定一个默认值,该值将Image作为参数。
即:
Image::Image( Image & const img )
{
this->size_x = img.get_size_x();
}