重载运算符=而不是使用访问器

时间:2013-12-21 12:48:14

标签: c++ operator-overloading

我有一个名为MyInteger的类,这个类有一个int类型的数据成员 - 如何重载运算符“=”来返回这个整数?我不允许使用accessor-method返回整数。

数据成员

 private:
    int number;

功能

 int MyInteger::operator=(MyInteger myInteger) {

    myInteger = this->number;

    return myInteger;
}

我知道这是错误的,我试图进行类型转换,但这也是错误的。

在另一个班级我使用这个整数来打印

 cout << number << endl;

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:5)

您想要如何使用它的示例根本不使用=运算符。如何重载operator=帮助你?

如果您希望能够将MyInteger个对象插入输出流,则需要overload operator<<左操作数是输出流,右操作数是MyInteger个对象

答案 1 :(得分:-6)

我认为你不是指赋值运算符,而是谈论转换运算符。

例如:

#include <iostream>
#include <algorithm>
#include <iterator>

class MyInteger
{
public:
    MyInteger() : number( 0 ) {}
    void operator ()( int x ) { if ( x < 0 ) ++number; }
    operator int() const { return number; }

private:
    int number;
};

int main()
{
   int a[] = { 1, 2, -3, 4, -5, 6, -7 };
   int count = std::for_each( std::begin( a ), std::end( a ), MyInteger() );
   std::cout << "There are " << count << " negative values" << std::endl;
}