如何让我的方法在c ++中识别我的对象值

时间:2015-12-08 19:05:27

标签: c++

我一直在教自己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;
}

1 个答案:

答案 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 }); } }; });