kunks
Registered +
- Registriert
- Dez. 2003
- Beiträge
- 326
Hey FSB'ler,
hab mal wieder n kleines Problem. Diesmal mit C++..
Und zwar müssen wir im OOP Kurs eine kleine "Medienverwaltung" schreiben. Bin eigentlich ganz zufrieden, bis auf die Tatsache dass ich, seitdem ich den Code in drei verschiedenen Dateien (header.h für Klassendefinitionen, main.cpp: Hauptprogramm, classfunc.cpp: Klassen)
immer Fehler beim Compilieren bekomme
Hier die Fehlermeldung(en):
Hier der/die Code(s):
Kann mir vielleicht jemand weiter helfen? Komm nicht drauf was der Compiler von mir will bzw. warum er meckert. Compiler is C++
MfG kunks
hab mal wieder n kleines Problem. Diesmal mit C++..
Und zwar müssen wir im OOP Kurs eine kleine "Medienverwaltung" schreiben. Bin eigentlich ganz zufrieden, bis auf die Tatsache dass ich, seitdem ich den Code in drei verschiedenen Dateien (header.h für Klassendefinitionen, main.cpp: Hauptprogramm, classfunc.cpp: Klassen)
immer Fehler beim Compilieren bekomme
Hier die Fehlermeldung(en):
Code:
nic@nic-laptop:~/Dokumente/Studium/2.Semester/OOP/übung2$ g++ -o ausgabe main.cpp classfunc.cpp
/tmp/ccx7maTO.o: In function `Buch::Buch()':
classfunc.cpp:(.text+0x476): undefined reference to `Medium::Medium(int)'
/tmp/ccx7maTO.o: In function `Buch::Buch()':
classfunc.cpp:(.text+0x58c): undefined reference to `Medium::Medium(int)'
/tmp/ccx7maTO.o: In function `Video::Video()':
classfunc.cpp:(.text+0x6a2): undefined reference to `Medium::Medium(int)'
/tmp/ccx7maTO.o: In function `Video::Video()':
classfunc.cpp:(.text+0x7b8): undefined reference to `Medium::Medium(int)'
collect2: ld gab 1 als Ende-Status zurück
nic@nic-laptop:~/Dokumente/Studium/2.Semester/OOP/übung2$
Hier der/die Code(s):
PHP:
//Headerdatei (header.h)
#ifndef HEADER_H
#define HEADER_H
#include
#include
#include
#include
using namespace std;
class Medium {
public:
Medium();
Medium(int);
int getsignatur();
void print();
void entleihen();
void rueckgabe();
protected:
int signatur;
string titel;
string typ;
bool status;
};
class Buch : public Medium {
public:
Buch();
void print();
void entleihen();
void rueckgabe();
private:
int seiten;
};
class Video : public Medium {
public:
Video();
void print();
void entleihen();
void rueckgabe();
private:
float spieldauer;
};
#endif
//main.cpp
#include "header.h"
const int S = 20;
int main(){
const int N = 10;
char eingabe;
Medium* neuM[N];
int m = 0, v = 0, b = 0;
Video* neuV[N] = {NULL};
Buch* neuB[N] = {NULL};
int sig_check;
while(1){
cout cout Anlegen und Initialisieren" cout Hinzufügen und Initialisieren eines neuen Buches" cout Hinzufügen und Initialisieren eines neuen Videos" cout Anzeige der Medieneigenschaft" cout Ausleihen" cout Rückgabe" cout Programmende" cout cin >> eingabe;
cout
switch(eingabe){
case 'm': //if(neu == NULL)
//delete neu;
if (m >= N)
cout else{
neuM[m] = new Medium;
m++;
}
break;
case 'b': if (b >= N)
cout else{
neuB[b] = new Buch;
b++;
}
break;
case 'v': if (v >= N)
cout else{
neuV[v] = new Video;
v++;
}
break;
case 'l': cout cout for (int i = 0; i < m; i++){
neuM[i]->print();
cout }
for (int i = 0; i < b; i++){
neuB[i]->print();
cout }
for (int i = 0; i < v; i++){
neuV[i]->print();
cout }
break;
case 'e': cout cin >> sig_check;
for(int i = 0; i if (neuM[i]->getsignatur() == sig_check)
neuM[i]->entleihen();
}
for(int i = 0; i if (neuB[i]->getsignatur() == sig_check)
neuB[i]->entleihen();
}
for(int i = 0; i if (neuV[i]->getsignatur() == sig_check)
neuV[i]->entleihen();
}
break;
case 'r': cout cin >> sig_check;
for(int i = 0; i if (neuM[i]->getsignatur() == sig_check)
neuM[i]->rueckgabe();
}
for(int i = 0; i if (neuB[i]->getsignatur() == sig_check)
neuB[i]->rueckgabe();
}
for(int i = 0; i if (neuV[i]->getsignatur() == sig_check)
neuV[i]->rueckgabe();
}
break;
case 'q': return 0;
break;
}
}
return 0;
}
//classfunc.cpp
#include "header.h"
const int S = 20;
Medium::Medium(){
status = false;
cout cin >> signatur;
cin.ignore(10,'\n');
cout getline(cin, titel);
typ.assign("Medium");
}
void Medium::print(){
cout }
int Medium::getsignatur(){
return signatur;
}
void Medium::entleihen(){
if(status == true){
status = false;
cout }
}
void Medium::rueckgabe(){
if(status == false){
status = true;
cout }
}
Video::Video():Medium(0) {
status = false;
cout cin >> signatur;
cin.ignore(10,'\n');
cout getline(cin, titel);
cout cin >> spieldauer;
typ.assign("Video");
}
void Video::print(){
Medium::print();
cout }
void Video::entleihen(){
Medium::entleihen();
}
void Video::rueckgabe(){
Medium::rueckgabe();
}
Buch::Buch():Medium(0) {
status = false;
cout cin >> signatur;
cin.ignore(10,'\n');
cout getline(cin, titel);
cout cin >> seiten;
typ.assign("Buch");
}
void Buch::print(){
Medium::print();
cout }
void Buch::entleihen(){
Medium::entleihen();
}
void Buch::rueckgabe(){
Medium::rueckgabe();
}
Kann mir vielleicht jemand weiter helfen? Komm nicht drauf was der Compiler von mir will bzw. warum er meckert. Compiler is C++
MfG kunks
für die vielen guten Antworten. Das mit der fehlenden Definition war natürlich richtig, daran lag es dass das Programm erst gar nicht kompiliert werden konnte.