我一直在教自己C ++,我遇到了一些问题。希望你能指导我。基本上在main方法中,我创建了一个名为" s1"我试图使用在#34; getResults(double gpa)"的学生班级下创建的方法来获得他的GPA的结果。
首先,我遇到一个错误,上面写着"二进制表达式的操作数无效(' ostream'(又名' basic_ostream')和void')
我理解在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;
}
答案 0 :(得分:2)
目前,您的getResults
函数的返回类型为void
,这意味着它实际上并未返回任何内容。因此,请勿尝试cout
主要功能的// Your result is printed within this function
s1.getResult(s1GPA);
// Print a new line if you wish
cout << endl;
结果。
考虑以下编辑:
getResults
此外,由于您的printResults
并非 ,所以我建议您将名称更改为getResult
。
注意强>
请注意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";
}
}
:
cout
如果您的主要声明中有声明,它会尝试getResult
无,因为cout << s1.getResult(s1GPA) << endl;
// ^^^^^^^^^^^^^^^^^^^
// This doesn't return anything for cout to output.
是无效的:
getResult
这就是为什么您只需要致电cout
而不是尝试var module = ons.bootstrap('my-app', ['onsen','ngSanitize','ngCookies','ngStorage']);
module.factory('methodService', [ '$scope', '$timeout', '$http',
'$localStorage', 'alertService',
function($scope, $timeout, $http, $localStorage, alertService){
}]);
module.factory('alertService', function () {
var data = {
title: 'Alert',
message: ''
}
return {
getTitle: function () {
return data.title;
},
setTitle: function (title) {
data.title = title;
},
getMessage: function () {
return data.message;
},
setMessage: function (message) {
data.message = message;
},
alert : function(){
ons.notification.alert({
message: data.message,
title: data.title
});
}
};
});
。