A Student.h állomány tartalma:
#include <string>
#include <cstring>
class Student
{
static const unsigned neptun_size = 7;
char neptun[neptun_size]; // Ehelyett is jobb lenne a string, de ez is szóba jöhet
unsigned mark; // Érdemjegy: az unsigned charral több baj van, mint így (minden I/O karakterként kezeli)
public:
std::string name; // Ezt nem akarjuk korlátozni
Student(std::string name = "", char neptun[] ="xxxxxx", unsigned mark=1):name(name)
{
setNeptun(neptun);
setMark(mark);
}
void setNeptun(char neptun[]);
const char * getNeptun()const {return neptun;}
void setMark(unsigned mark);
unsigned char getMark()const{return mark;}
};
A Student.cpp állomány tartalma:
#include "Student.h"
#include <stdexcept>
#include <iostream>
using namespace std;
void Student::setNeptun(char neptun[])
{
if(strlen(neptun) == neptun_size-1)
{
strcpy(this->neptun, neptun);
}
else
{
// cerr << "Bad neptun format." << endl;
throw domain_error("Bad neptun format."); // Ezt csak a félév vége felé kell tudni, addig elég a felső sor
}
}
void Student::setMark(unsigned mark)
{
if(mark > 0 && mark <=5)
{
this->mark = mark;
}
else
{
// cerr << "Bad mark format." << endl;
throw domain_error("Bad mark format.");// Ezt csak a félév vége felé kell tudni, addig elég a felső sor
}
}