#c
Вопрос:
#include <iostream>
using namespace std;
class Animal
{
public:
string eat()
{
return "I can Eat";
}
string sleep()
{
return "I can sleep";
}
void showData(int *weight, int *age)
{
cout << "The weight is " << weight << " and the age is " << age << endl;
}
};
int main()
{
Animal an;
int x;
int y;
cout << "Enter the height and weight of the dog." <<endl;
cin >> x;
cin >> y;
cout << an.eat()<< endl;
cout << an.sleep()<<endl;
cout << an.showData(amp;x,amp;y) << endl;
return 0;
}
В той части, которая гласит:
cout << an.showData(amp;x,amp;y)
Я получаю сообщение об ошибке, в котором говорится:
недопустимые операнды в двоичное выражение
Я думал, что, используя адреса, я смогу мгновенно вывести функцию, но, видимо, я предполагаю, что есть какая-то несовместимость?
Комментарии:
1.
showData
объявлено, что не возвращает никакого значения, так что вы пытаетесь с этим сделатьcout << an.showData(amp;x,amp;y)
?2. Почему вы используете указатели для
showData
. Вам не нужно использовать указатели.3. @ThomasMatthews я хотел использовать функцию с несколькими параметрами, и я подумал, что использование указателей поможет.
4. Если вы передаете функции много параметров, подумайте о том, чтобы поместить их в a
struct
и передать структуру.5. @Shifty Передача указателей на целые числа не более эффективна, чем передача значений целых чисел вместо этого. Вам следует предпочесть передачу параметров по значению, если вы точно не знаете, что передача по ссылке/указателю на самом деле лучше (т. Е. Избегать копий нетривиальных типов).
Ответ №1:
showData()
возвращает void
, т. е. ничего. Так что переходить не к operator<<
чему , отсюда и ошибка.
Просто измените cout << an.showData(...)
на an.showData(...)
, так showData()
как делает свои собственные cout
утверждения внутренне.
Если вы cout << an.showData(...)
действительно хотите что-то отобразить, то showData()
вам нужно return
что-то достойное отображения, например std::string
, например:
string showData(int *weight, int *age)
{
return "The weight is " to_string(*weight) " and the age is " to_string(*age);
}
Animal an;
cout << an.showData(amp;x,amp;y) << endl;