"Invalid operands to binary expression (ostream and void)" 是什么意思,如何解决?
What does "Invalid operands to binary expression (ostream and void)" mean, and how can it be fixed?
我遇到一个错误:
Invalid operands to binary expression ('ostream' (aka 'basic_ostream') and 'void')
我知道 Whosebug 上发布了一些与此错误相关的问题,但我需要有关此错误含义的特定上下文的一些帮助和解释。
在 main()
函数中,我创建了一个名为 s1
的学生对象。错误发生在 main()
中,我正在尝试使用 Student
class 的一种名为 getResults(double gpa)
.
的方法来获取他的 GPA 结果
#include <iostream>
using namespace std;
class Human{
protected: string name;
protected: int age;
public: Human(){
name = "Unknown";
age = 5;
}
public:
Human(string name, int age){
this->name = name;
this->age = age;
}
string getName(){
return name;
}
int getAge(){
return age;
}
void setName(string name){
this->name = name;
}
void setAge(int age){
this->age = age;
}
};
class Student: public Human{
protected: string school;
protected: double gpa;
public:
Student(string name, int age, string school, double gpa) : Human(name, age){
this->school = school;
this->gpa = gpa;
}
double getGPA(){
return gpa;
}
string getSchool(){
return school;
}
void setGPA(double gpa){
this->gpa = gpa;
}
void setSchool(string school){
this->school = school;
}
void getResult(double gpa){
if (gpa < 3.0) {
cout << "You did well!";
} else {
cout << "Try harder next time";
}
}
};
int main() {
Student s1 ("John", 23, 'm', "University of Chicago", 3.4);
double s1GPA = s1.getGPA();
cout << s1.getResult(s1GPA) << endl;
return 0;
}
目前,您的 getResults
函数有一个 void
return 类型,这意味着它实际上 return 没有任何东西.正因为如此,不要试图 cout
在你的 main 中这个函数的结果。
考虑以下编辑:
// Your result is printed within this function
s1.getResult(s1GPA);
// Print a new line if you wish
cout << endl;
此外,由于您的 getResults
并没有真正 get 任何东西,我建议将名称更改为 printResults
.
备注
请注意,在您的 getResult
中,它没有 return 任何内容,因为它是空的。在此函数中,您只是使用 cout
:
将文本输出到控制台
// Notice that this function doesn't actually return anything
void getResult(double gpa){
if (gpa < 3.0) {
// Output this message to console
cout << "You did well!";
} else {
// Output this message to console
cout << "Try harder next time";
}
}
当你在 main 中有语句时,它试图 cout
nothing 因为 getResult
是空的:
cout << s1.getResult(s1GPA) << endl;
// ^^^^^^^^^^^^^^^^^^^
// This doesn't return anything for cout to output.
这就是为什么您只需要调用 getResult
而不是尝试 cout
的原因。
我遇到一个错误:
Invalid operands to binary expression ('ostream' (aka 'basic_ostream') and 'void')
我知道 Whosebug 上发布了一些与此错误相关的问题,但我需要有关此错误含义的特定上下文的一些帮助和解释。
在 main()
函数中,我创建了一个名为 s1
的学生对象。错误发生在 main()
中,我正在尝试使用 Student
class 的一种名为 getResults(double gpa)
.
#include <iostream>
using namespace std;
class Human{
protected: string name;
protected: int age;
public: Human(){
name = "Unknown";
age = 5;
}
public:
Human(string name, int age){
this->name = name;
this->age = age;
}
string getName(){
return name;
}
int getAge(){
return age;
}
void setName(string name){
this->name = name;
}
void setAge(int age){
this->age = age;
}
};
class Student: public Human{
protected: string school;
protected: double gpa;
public:
Student(string name, int age, string school, double gpa) : Human(name, age){
this->school = school;
this->gpa = gpa;
}
double getGPA(){
return gpa;
}
string getSchool(){
return school;
}
void setGPA(double gpa){
this->gpa = gpa;
}
void setSchool(string school){
this->school = school;
}
void getResult(double gpa){
if (gpa < 3.0) {
cout << "You did well!";
} else {
cout << "Try harder next time";
}
}
};
int main() {
Student s1 ("John", 23, 'm', "University of Chicago", 3.4);
double s1GPA = s1.getGPA();
cout << s1.getResult(s1GPA) << endl;
return 0;
}
目前,您的 getResults
函数有一个 void
return 类型,这意味着它实际上 return 没有任何东西.正因为如此,不要试图 cout
在你的 main 中这个函数的结果。
考虑以下编辑:
// Your result is printed within this function
s1.getResult(s1GPA);
// Print a new line if you wish
cout << endl;
此外,由于您的 getResults
并没有真正 get 任何东西,我建议将名称更改为 printResults
.
备注
请注意,在您的 getResult
中,它没有 return 任何内容,因为它是空的。在此函数中,您只是使用 cout
:
// Notice that this function doesn't actually return anything
void getResult(double gpa){
if (gpa < 3.0) {
// Output this message to console
cout << "You did well!";
} else {
// Output this message to console
cout << "Try harder next time";
}
}
当你在 main 中有语句时,它试图 cout
nothing 因为 getResult
是空的:
cout << s1.getResult(s1GPA) << endl;
// ^^^^^^^^^^^^^^^^^^^
// This doesn't return anything for cout to output.
这就是为什么您只需要调用 getResult
而不是尝试 cout
的原因。