перегрузка> как функция-член - PullRequest
0 голосов
/ 21 августа 2011

Я написал реляционный оператор <как член класса Test </p>

bool Test::operator<(const Test& t) 
{
if (a<t)
      return true;
}

Этот код находится в заголовочном файле, который я включил в мой .cpp.Однако, когда я компилирую свою программу, я получаю следующую ошибку:

test.h: 134:6: error: ‘a’ was not declared in this scope

Где я могу объявить 'a'?я должен написать это в своем заголовочном файле как Test & a?не могли бы вы помочь мне исправить это.ТНХ!

1 Ответ

2 голосов
/ 21 августа 2011

Предполагается, что вы определяете, как объект Test можно сравнить с другим объектом типа Test, но в своем коде вы не определяете, как, только что "a" - что бы это ни было, меньше, чем другой объект.

class Test
{
public:
  Test(int myscore) { score = myscore; }
  bool operator<(const Test &t);
  int score;
}

bool Test::operator<(const Test &t) 
{
  // Is less than if score is smaller
  if(score < t.score)
    return true;
  else
    return false;
}

Тогда в вашей программе

// ...

Test test1(4);
Test test2(5);

if(test1 < test2) std::cout << "4 is less than 5 by comparing objects\n";
else std::cout << "Failed!\n";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...