我一直在教自己的C++,我遇到了一些问题。希望你能指导我。基本上,在主要方法中,我创建了一个名为“s1”的学生对象,我试图使用名为“getResults(double gpa)”的学生类下创建的方法来获得他的GPA的结果。我如何让我的方法在C++中识别我的对象值
首先,我遇到一个错误,指出“无效操作数为二进制表达式(‘ostream的’(又名‘basic_ostream’)和空')
据我所知,有关这个错误张贴在一些问题StackOverflow,但我需要一些帮助和解释关于这个具体的上下文这个错误的含义。
我需要帮助的另一件事是,因为我使用s1对象调用方法,有没有办法我可以写方法“getResults()”,以便它可以自动检索学生对象的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;
}
'getResult()'不返回任何东西,它被声明为'void'。试图输出'void'会扰乱编译器,因为流不知道如何输出'void'。 –
C++不是Java。您不必使用访问说明符修饰每个成员。例如,在'Human'类中,只有一个'protected:'和一个'public:'就足够了。 –
你真的需要从阅读这本书开始,而不是我要求的所有人。你正试图用C++编写Java代码,这不会带你到任何地方。 – SergeyA