Как вызвать функцию bool - PullRequest
       3

Как вызвать функцию bool

1 голос
/ 21 апреля 2010

Я не видел ничего, что решало бы мою конкретную проблему с кодом.

У меня есть функция bool в классе; функция bool называется:

bool Triplet::operator ==(const Triplet& operand)const {
    if( (data[0] == operand.data[0]) &&
            (data[1] == operand.data[1]) &&
            (data[2] == operand.data[2]))
        return true; 
        ...

И я пытаюсь позвонить на Мэйн, но у меня проблемы с получением правильного звонка. Очевидно, что если я пропущу что-либо в формулировке, это даст ошибку, что у меня слишком мало аргументов, и если я попытаюсь использовать всю формулировку функции, я получу ошибку, что мне нужна точка с запятой, но у меня уже есть точка с запятой в конце вызова, так что я знаю, что что-то не так, и я просто не могу понять, что не так! Любая помощь будет оценена!

Заранее спасибо.

Ответы [ 3 ]

11 голосов
/ 21 апреля 2010

Вы можете вызвать его, используя == (это то, что делает перегрузка оператора; оно перегружает значение оператора):

Triplet a;
Triplet b;

if (a == b) //< calls your operator==

Вы также можете вызвать его, используя синтаксис вызова функции:

if (a.operator==(b)) //< also calls your operator==

но вы обычно не хотите или не должны этого делать.

Один случай, который вам может понадобиться, это если по какой-то причине у вас есть шаблон оператора, который имеет параметры шаблона, которые не могут быть выведены из аргументов (это редко для operator==, но я видел, что используется для operator[] до).

8 голосов
/ 21 апреля 2010

Это перегрузка оператора C ++, она разработана таким образом, что может изменить поведение обычного оператора:

Triplet a, b;
if (a == b) // calls Triplet::operator==()

Если вы действительно хотите, вы можете позвонить оператору по имени:

if (a.operator==(b))
2 голосов
/ 21 апреля 2010

bool это просто тип возврата. Это никак не связано с тем, как называется функция. Как и в примере с Джеймсом, эта функция является оператором, поэтому вы будете использовать оператор, как в обычном синтаксисе, для его вызова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...