从另一个函数初始化print()中的成员

时间:2015-10-17 22:25:48

标签: c++

目前还不确定我在哪里,试图找出答案。我需要初始化print()const中的成员,因为它给了我随机的乱码。无论我尝试做什么,它似乎都不起作用。不知道该怎么做。任何人都可以帮我一把吗?

*编辑:在其余代码中添加。我第一次提交时忘记了。

Student.cpp

#include "student.h"


//implement the required 3 functions here


Student::Student(const char initId[], double gpa)
{
    // initialize a newly created student object with the passed in value



}

bool Student::isLessThanByID(const Student& aStudent) const
{
//  compare the current student object with the passed in one by id.
if (strcmp(id, aStudent.id) > 0)
{
    return true;
}
else
{
    return false;
}


}

bool Student::isLessThanByGpa(const Student& aStudent) const
{
// compare the current student object with the passed in one by gpa
if (gpa < aStudent.gpa)
{
    return true;
}
else
{
    return false;
}

}

void Student::print() const
{
cout << id << '\t' << gpa << endl;
}

student.h

#ifndef STUDENT_H
#define STUDENT_H

#include <iostream>
using namespace std;

class Student
{
public:
Student(const char initId[], double gpa);
bool isLessThanByID(const Student& aStudent) const;
bool isLessThanByGpa(const Student& aStudent) const;
void print()const;
private:
const static int MAX_CHAR = 100;
char    id[MAX_CHAR];
double  gpa;
};
#endif

app.cpp

#include "student.h"

int main()
{
Student s1("G10", 3.9);
Student s2("G20", 3.5);

s1.print();
s2.print();

if(s1.isLessThanByID(s2))
{
    cout << "about right!" << endl;
}
else
{
    cout << "uhmm ..." << endl;
}
if(!s1.isLessThanByGpa(s2))
{
    cout << "about right!" << endl;
}
else
{
    cout << "uhmm ..." << endl;
}

system("pause");
return 0;
}

1 个答案:

答案 0 :(得分:1)

该代码中没有任何内容可以设置Student::idStudent::gpa的值。您的构造函数包含参数initIdgpa;你应该将它们复制到你的对象中。根据您提供的Student声明,这应该是适当的:

Student::Student(const char initId[], double gpa) : gpa(gpa)
{
    strncpy(id, initId, Student::MAX_CHAR-1);
    id[Student::MAX_CHAR-1] = '\0';
}