Возвращаемое значение в условном операторе - PullRequest
2 голосов
/ 13 августа 2011

Я пытался вернуть значение true или false в зависимости от условия, используя условный оператор, но получил ошибку.Вот мой код,

bool isEmpty()
{
    int listSize = Node::size();
    listSize > 0 ? return (true) : return (false);
    return false;
}

А вот и ошибка,

error C2107: illegal index, indirection not allowed

Теперь я застрял здесь.Я не понимаю суть. Логично, я думаю, что это должно быть правильно.Пожалуйста, ведите меня об этом.Спасибо

Ответы [ 3 ]

13 голосов
/ 13 августа 2011

Вы можете иметь только выражения * в качестве операндов троичного условного выражения, но не операторы.Обычный способ сказать это:

return listSize > 0 ? true : false;

или даже лучше,

return listSize > 0;

или даже лучше,

bool isEmpty() { return Node::size() > 0; }


*) Поскольку вы пометили это как C и C ++, знайте, что существует небольшая разница между допустимыми выражениями в двух языках.

5 голосов
/ 13 августа 2011

Тернарный оператор (?:) не предназначен для такого использования. У вас есть синтаксическая ошибка.

Попробуйте вместо этого:

return (listSize > 0);
2 голосов
/ 13 августа 2011

Если у вас нет более глубокой причины для этого, чего мне не хватает, вам следует просто return (listSize > 0);.

...