#c #c 11
#c #c 11
Вопрос:
Мой класс определен в моем заголовочном файле, а в моем .cpp-файле у меня есть:
bool Card::foo(const std::string amp;trump) const {...}
bool Card::bar(const std::string amp;trump) const {
bool oof = foo(const std::string amp;trump);
}
По какой-то причине это не работает. XCode выдает ошибку: ожидаемое выражение. То же самое происходит, когда я пытаюсь:
bool oof = Card::foo(const std::string amp;trump);
bool oof = foo(const std::string amp;trump) const;
Комментарии:
1.
bool oof = foo(trump);
Вы делаете это слишком сложным.2. Почему const std::string не включен?
3. Почему они должны быть?
4. Вам нужно, чтобы амперсанд в объявлении функции передавался по ссылке — не на каждом сайте вызова.
5. @Goldname По той же причине вы можете писать
printf("%d", 5);
и нетprintf(const char *"%d", int 5);
. Типы никогда не включаются при вызове функции.
Ответ №1:
Проверьте
bool Card::foo(const std::string amp;trump) const {...}
bool Card::bar(const std::string amp;trump) const {
bool oof = foo(trump);
}
Любое из приведенных ниже выражений:
bool oof = foo(const std::string amp;trump);
bool oof = Card::foo(const std::string amp;trump);
bool oof = foo(const std::string amp;trump) const;
переопределил бы trump
, поскольку
bool Card::bar(const std::string amp;trump) const
уже определил его.
Ответ №2:
Информация о типе не требуется / не допускается при вызове foo (часть const std::string), потому что язык не работает таким образом. Это потребуется для объявления функции, но не указывайте тип при ее вызове. Посмотрите на пример Игоря.