Menü Output Zeiger Fehler



  • Hey,

    ich beschäftige mich gerade mit Strukturen (inkl. Zeiger) und habe folgendes Codebeispiel aus dem Buch "C++ von A bis Z". Leider bekomm ich einen Compilerfehler:

    Der Ausdruck muss ein Zeiger auf einen vollständigen Objekttypen sein

    Warum?

    MfG Domi

    #include <iostream>
    using namespace std;
    
    struct geburtstage{
    	char name[50];
    	int tag;
    	int monat;
    	int jahr;
    };
    
    const int DATA = 10;
    
    void input(int& zaehler, struct geburtstage* b);
    void output(int zaehler, struct geburtstage* b);
    
    int main(void){
    	struct geburtstage geb[DATA];
    	int zaehler = 0, wahl;
    	do{
    		cout << "\nGeburtstage-Verwaltung" << endl
    			 << "----------------------" << endl
    			 << "-1- Eingeben" << endl
    			 << "-2- Ausgeben" << endl
    			 << "-3- Ende" << endl;
    		cin >> wahl;
    		switch(wahl){
    		case 1:
    			input(zaehler, geb);
    			break;
    		case 2:
    			output(zaehler, geb);
    			break;
    		case 3:
    			break;
    		default:
    			cout << "Falsche Eingabe!" << endl;
    		}
    	}while(wahl != 3);
    	system("PAUSE");
    	return 0;
    }
    
    void input(int& zaehler, struct geburtstage* b){
    	cout << "Name   : ";
    	cin >> b[zaehler].name;
    	cout << "Tag    : ";
    	cin >> b[zaehler].tag;
    	cout << "Monat  : ";
    	cin >> b[zaehler].monat;
    	cout << "Jahr   : ";
    	cin >> b[zaehler].jahr;
    	zaehler++;
    }
    
    void output(int zaehler, struct geburstage* b){
    	for(int i = 0; i < zaehler; i++){
    		// Fehler VS
    		// Der Ausdruck muss ein Zeiger auf einen vollständigen Objekttypen sein
    		cout << b[i].name  << " - "
    			 << b[i].tag   << '.'
    			 << b[i].monat << '.'
    			 << b[i].jahr  << endl;
    	}
    	cout << "\n\n";
    }
    


  • Schau mal genau hin:

    geburstage
    

    P.S. In C++ kannst du das Schlüssewort 'struct' als auch 'class' bei der Benutzung weglassen:

    void output(int zaehler, geburstage* b)
    

    Nun müßtest du auch einen anderen Fehler erhalten -)



  • Th69 schrieb:

    Schau mal genau hin:

    geburstage
    

    P.S. In C++ kannst du das Schlüssewort 'struct' als auch 'class' bei der Benutzung weglassen:

    void output(int zaehler, geburstage* b)
    

    Nun müßtest du auch einen anderen Fehler erhalten -)

    Ja jetzt bekomm ich einen Programmabsturz... Ich frage mich warum der Autor des Buches einen fehlerhaftes Codebeispiel aufführt...



  • Ich sehe keinen Fehler.
    Wo tritt der Fehler denn auf und was gibst du für Werte ein?



  • Blacky666 schrieb:

    Ich frage mich warum der Autor des Buches einen fehlerhaftes Codebeispiel aufführt...

    Da bist du nicht der erste, der sich das fragt. Die mangelhafte Qualität des Buchs ist allgemein bekannt, hier im Forum wird meistens davon abgeraten, es zu verwenden. In den FAQ/Archiv zu diesem Unterforum gibts einen guten Überblick über empfehlenswerte Bücher.



  • pumuckl schrieb:

    Blacky666 schrieb:

    Ich frage mich warum der Autor des Buches einen fehlerhaftes Codebeispiel aufführt...

    Da bist du nicht der erste, der sich das fragt. Die mangelhafte Qualität des Buchs ist allgemein bekannt, hier im Forum wird meistens davon abgeraten, es zu verwenden. In den FAQ/Archiv zu diesem Unterforum gibts einen guten Überblick über empfehlenswerte Bücher.

    Ok, das wusste ich jetzt nicht. Ich dachte das Buch wäre super...

    Habe jetzt den Code zum laufen gebracht, ich weiß nicht warum ich gestern ein Programmabsturz bekommen habe. Jetzt gehts aber. 😕


Anmelden zum Antworten