c++ - operator+ 没有返回完整的对象?

标签 c++

我们得到了这个头文件,它要求我们重载 =+ 运算符,这样我们就可以执行 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 问题。无论我通过哪个对象,我都面临同样的问题。字符串没问题,但似乎没有正确传递整数

最佳答案

原来这是我的复制构造函数。我现在觉得很傻。

我所要做的就是在我的运算符中分配一个默认值,该值将图像作为参数。

即:

Image::Image( Image & const img )
{
     this->size_x = img.get_size_x();
}

关于c++ - operator+ 没有返回完整的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8098700/

相关文章:

c++ - 与成员函数中的 std::move(*this) 的行为差异

c++ - C++ 中的延迟评估包装类?

c# - 数学表达式求值器的简单库或实现

c++ - Linux Ubuntu下绕行功能

c++ - 如何在数据文件上找到最接近第一个点的点? C++

c++ - 如何在 C++ 中打印 .txt 文件中的特定数组条目?

c++ - DirectX 等效于 glBlendFunc(…………)

c++ - 我可以将 `std::this_thread::sleep_for()` 用于 MPI 进程吗?

c++ - Dllmain 没有被调用?

c++ - 在 Swift 项目中集成 Box2d 会出现找不到 cassert 文件的错误