Thread: multiple definition, undefined reference to

Threaded View

Previous Post Previous Post   Next Post Next Post
  1. #8
    VA National Guard The Brain's Avatar
    Join Date
    May 2004
    Location
    Manassas, VA USA
    Posts
    903
    I kind of re-arranged things here.. I put all the classes in a header file by themselves, replaced inline functions.. I commented out or removed any functions that caused a linker error. Everything here compiles. Take a look and compare to what ye' got and slowly work up to what you want from code that compiles.


    student.h
    Code:
    /* Skapar elever, tilldelar dem kön samt betyg */
    
    
    #ifndef STUDENT_H
    #define STUDENT_H
    
    #include <iostream>
    
    using std::cin;
    using std::cout;
    
    class student
    {
    public:
    
         //student();
         //~student();
         void setGender(); // FALSE=boy, TRUE=girl
         void giveGrade();
         float getGrade();//{return grade;}
         bool getGender();//{return gender;}
    
    private:
    
         bool gender;
         double grade;
    };
    
    #endif // STUDENT_H

    student.cpp
    Code:
    #include "student.h"
    using namespace std;
    // 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;
    }
    
    float student::getGrade()//{return grade;}
    {
    	return grade;
    }
    
    bool student::getGender()//{return gender;}
    {
    	return gender;
    }

    calc.h
    Code:
    #ifndef CALC_H
    #define CALC_H
      
    #include"student.h"
    #define students 20
    
    
    
    
    class klass : public student 
    {
    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();  //This function was never defined
         int numBo();//{return numB;}  Antal B
         int numGi();//{return numG;}  Antal G
         int totalStudents(){return numG+numB;} // Totala antalet studneter
         void collect();
         void calcaverage();
    
    
    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
    };
    
    #endif // CALC_H

    calc.cpp
    Code:
    #include "calc.h"
    #include "student.h"
    using namespace std;
    
    
    klass::klass() : numG(0), numB(0), AvGradeG(0), AvGradeB(0), totGrade(0)
    {
    }
    
    klass::~klass()
    {
    }
    
    void klass::collect()
    {	
    
    	for(int i=(numG+numB);i>0;i--)
    	{
    		if(getGender()) // om getGender() är sann = tösabete...
    		{
    			Ggrade=Ggrade+getGrade();
    			numG++;
    		} 
    
    		else // ...annars en hane
    		{
    			Bgrade=Bgrade+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);
    }
    
    float klass::AvGradeGirls()//{return AvGradeG;}// medelbetyg för tjejer
    {
    	return AvGradeG;
    }
    
    float klass::averagegrade()//{return totGrade;} // medelbetyg
    {
    	return totGrade;
    }
    
    
    float klass::AvGradeBoys()//{return AvGradeB;} // medelbetyg för killar
    {
    	return AvGradeB;
    }
    
    int klass::numBo()//{return numB;}  Antal B
    {
    	return numB;
    }
    
    int klass::numGi()//{return numG;}  Antal G
    {
    	return numG;
    }

    main.cpp
    Code:
    #include <iostream>
    #include "calc.h"
    #include "student.h"
    
    using std::cin;
    using std::cout;
    using std::endl;
    
    bool menu();
    
    int main(int argc, char *argv[])
    {
         int SEL;
    
         klass klass1; // Initiera ett objekt, "Klass", av klassen Klass
    
         cout << "Menu selection:\n1.Add student data\n2.Randomize    student data\n3.Exit" << endl;
    
         cin >> SEL;
    
         switch(SEL)
         {
              case 1:  //klass1.addstudent();  //ERROR HERE
              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;
    }


    --------------------Configuration: main - Win32 Debug--------------------
    Compiling...
    calc.cpp
    student.cpp
    main.cpp
    Linking...

    main.exe - 0 error(s), 0 warning(s)
    Last edited by The Brain; 06-07-2005 at 06:47 PM.
    • "Problem Solving C++, The Object of Programming" -Walter Savitch
    • "Data Structures and Other Objects using C++" -Walter Savitch
    • "Assembly Language for Intel-Based Computers" -Kip Irvine
    • "Programming Windows, 5th edition" -Charles Petzold
    • "Visual C++ MFC Programming by Example" -John E. Swanke
    • "Network Programming Windows" -Jones/Ohlund
    • "Sams Teach Yourself Game Programming in 24 Hours" -Michael Morrison
    • "Mathmatics for 3D Game Programming & Computer Graphics" -Eric Lengyel

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Errors including <windows.h>
    By jw232 in forum Windows Programming
    Replies: 4
    Last Post: 07-29-2008, 01:29 PM
  2. Question about OpenGL/Linux
    By Ideswa in forum Linux Programming
    Replies: 12
    Last Post: 09-10-2006, 05:56 AM
  3. MinGW Linking GUI Program
    By Tonto in forum Tech Board
    Replies: 19
    Last Post: 08-23-2006, 03:28 PM
  4. How to: Use OpenGL with Jgrasp
    By Pickels in forum Game Programming
    Replies: 3
    Last Post: 08-30-2005, 10:37 AM
  5. c++ linking problem for x11
    By kron in forum Linux Programming
    Replies: 1
    Last Post: 11-19-2004, 10:18 AM