multiple definition, undefined reference to
Hi! I'm having trouble with a project of mine, I keep getting theese undefined reference to and multiple definitions of-errors... Could someone please take a look at it and help me with it?
my code:
main.cpp
Code:
#include <iostream>
#include "student.h"
#include "calc.h"
#include "calc.cpp"
using std::cin;
using std::cout;
using std::endl;
bool menu();
int main(int argc, char *argv[])
{
klass klass1; // Initiera ett objekt, "Klass", av klassen Klass
int SEL;
cout << "Menu selection:\n1.Add student data\n2.Randomize student data\n3.Exit" << endl;
cin >> SEL;
switch(SEL)
{
case 1:
klass1.addstudent();
break;
case 2:
break;
case 3:
return 0;
default:
cout << "ERROR" << endl;
}
klass1.collect();
klass1.calcaverage();
cout << "de " << klass1.numBo() << " killarnas medel \x84r " << klass1.AvGradeBoys() << "\n\n";
cout << "de " << klass1.numGi() << " tjejernas medel \x84r " << klass1.AvGradeGirls() << "\n\n";
cout << "de " << (klass1.numGi()+klass1.numBo()) << " studenternas medel \x84r " << klass1.averagegrade() << endl;
cin.ignore(255,'\n');
cin.get();
return 0;
}
calc.cpp
Code:
#include "calc.h"
klass::klass() : numG(0), numB(0), AvGradeG(0), AvGradeB(0), totGrade(0)
{
}
klass::~klass()
{
}
calc.h
Code:
#ifndef CALC_H
#define CALC_H
#include "student.h"
#define students 20
class klass{
public:
klass();
~klass();
float AvGradeGirls(){return AvGradeG;};// medelbetyg för tjejer
float averagegrade(){return totGrade;}; // medelbetyg
float AvGradeBoys(){return AvGradeB;}; // medelbetyg för killar
void addstudent();
int numBo(){return numB;}; // Antal B
int numGi(){return numG;}; // Antal G
int totalStudents(){return numG+numB;}; // Totala antalet studneter
void collect();
void calcaverage();
protected:
private:
student stud[students];
int Ggrade;
int Bgrade; // Tjejsor och killsars sammanlagda betyg (ej medelvärde)
int numG;
int numB;
double AvGradeB; // Gossars betyg
double AvGradeG; // Flickors betyg
double totGrade; // Totala betyget
};
void klass::collect()
{
for(int i=(numG+numB);i>0;i--)
{
if(stud.getGender()) // om getGender() är sann = tösabete...
{
Ggrade=Ggrade+stud.getGrade();
numG++;
}
else // ...annars en hane
{
Bgrade=Bgrade+stud.getGrade();
numB++;
}
}
}
void klass::calcaverage()
{
if(numG>0) // Inte dela med noll
AvGradeG=Ggrade/numG;
if(numB>0) // inte dela med noll
AvGradeB=Bgrade/numB;
if((numB+numG)>0) // inte dela med noll
totGrade=(Bgrade+Ggrade)/(numB+numG);
}
#endif // CALC_H
Student.h
Code:
/* Skapar elever, tilldelar dem kön samt betyg */
#ifndef STUDENT_H
#define STUDENT_H
#include <iostream>
class student
{
public:
student();
virtual ~student();
void setGender(); // FALSE=boy, TRUE=girl
void giveGrade();
float getGrade(){return grade;};
bool getGender(){return gender;};
protected:
private:
bool gender;
double grade;
};
// Funktioner
void student::setGender()
{
bool sex;
std::cout << "Specify sex of student; 1 (girl) or 0 (boy): ";
std::cin >> sex;
gender=(sex=0?0:1);
}
void student::giveGrade()
{
std::cout << "Specify student grade: (1-5) ";
std::cin >> grade;
}
#endif // STUDENT_H