Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++]Problem "does not name a type "

Ostatnio zmodyfikowano 2013-06-13 10:23
Autor Wiadomość
damian_rm
Temat założony przez niniejszego użytkownika
[C++]Problem "does not name a type "
» 2013-06-12 12:08:39
Witam. Przy kompilowaniu wyskakuje błąd "'nocleg' does not name a type".
Poniżej wklejam kod programu głównego i nocleg.h. W czym problem?
C/C++
#include <iostream>
#include <string.h>
#include <time.h>
#include <conio.h>
#include <cstdlib>
#include <fstream>

#include "osoba.h"
#include "gosc.h"
#include "nocleg.h"
#include "motel.h"
#include "hostel.h"
#include "schronisko.h"
#include "BB.h"
#include "pensjonat.h"

using namespace std;

nocleg * noclegi[ 100 ];
Osoba * osoby[ 100 ];

int u = 0, e = 0, size = 0, size_n = 0;


void zapis_do_pliku() {
    ofstream Dane;
    Dane.open( "noclegi.txt" );
   
    for( int i = 0; i < size_n; i++ ) {
        Dane << noclegi[ i ]->getTyp() << endl;
        Dane << noclegi[ i ]->getNazwa() << endl;
        Dane << noclegi[ i ]->getWojewodztwo() << endl;
        Dane << noclegi[ i ]->getMiejscowosc() << endl;
        Dane << noclegi[ i ]->getCena() << endl;
        Dane << noclegi[ i ]->getPrzyjazd() << endl;
        Dane << noclegi[ i ]->getIle_dob() << endl;
       
        if( noclegi[ i ]->getTyp() == "motel" ) {
            Dane << noclegi[ i ]->getRodzaj_pokoju() << endl;
            Dane << noclegi[ i ]->getPietro() << endl;
        }
        if( noclegi[ i ]->getTyp() == "hostel" ) {
            Dane << noclegi[ i ]->getRodzaj_pokoju() << endl;
            Dane << noclegi[ i ]->getPietro() << endl;
        }
        if( noclegi[ i ]->getTyp() == "schronisko" ) {
            Dane << noclegi[ i ]->getWyposazenie() << endl;
            Dane << noclegi[ i ]->getSzkola() << endl;
        }
        if( noclegi[ i ]->getTyp() == "BB" ) {
            Dane << noclegi[ i ]->getPietro() << endl;
        }
        if( noclegi[ i ]->getTyp() == "pensjonat" ) {
            Dane << noclegi[ i ]->getRodzaj_pokoju() << endl;
        }
    }
    Dane.close();
}

void zapisDoPliku() {
    ofstream goscie;
    goscie.open( "ListaGosci.txt" );
   
    for( int i = 0; i < size; i++ ) {
        goscie << "gosc" << endl;
        goscie << osoby[ i ]->getImie() << endl;
        goscie << osoby[ i ]->getNazwisko() << endl;
        goscie << osoby[ i ]->getPESEL() << endl;
       
    }
}

void odczytZPlikuOsob() {
    char imie[ 20 ];
    char nazwisko[ 20 ];
    char pesel[ 20 ];
    char typ[ 10 ];
    int i = 0;
    ifstream Osoby;
    Osoby.open( "ListaGosci.txt" );
   
    while( Osoby.good() ) {
        Osoby.getline( typ, sizeof( typ ) );
        if( typ[ 0 ] == 'k' ) {
            Osoby.getline( imie, sizeof( imie ) );
            Osoby.getline( nazwisko, sizeof( nazwisko ) );
            Osoby.getline( pesel, sizeof( pesel ) );
            osoby[ u++ ] = new Gosc( size, imie, nazwisko, pesel );
            size++;
        }
        i++;
    }
}


void odczytZPliku() {
    char typ[ 10 ], nazwa[ 40 ], wojewodztwo[ 20 ], miejscowosc[ 30 ], cena[ 10 ], przyjazd[ 10 ], ile_dob[ 10 ], rodzaj_pokoju[ 20 ], pietro[ 10 ], szkola[ 20 ], wyposazenie[ 20 ];
    int i = 0, cena2, ile_dob2, pietro2;
    ifstream Dane;
    Dane.open( "noclegi.txt" );
   
    while( Dane.good() ) {
        Dane.getline( typ, sizeof( typ ) );
        Dane.getline( nazwa, sizeof( nazwa ) );
        Dane.getline( wojewodztwo, sizeof( wojewodztwo ) );
        Dane.getline( miejscowosc, sizeof( miejscowosc ) );
        Dane.getline( cena, sizeof( cena ) );
        Dane.getline( przyjazd, sizeof( przyjazd ) );
        Dane.getline( ile_dob, sizeof( ile_dob ) );
       
        cena2 = atoi( cena );
        ile_dob2 = atoi( ile_dob );
       
        switch( typ[ 0 ] ) {
           
        case 'm':
            Dane.getline( rodzaj_pokoju, sizeof( rodzaj_pokoju ) );
            Dane.getline( pietro, sizeof( pietro ) );
            pietro2 = atoi( pietro );
            noclegi[ e++ ] = new Motel( size_n, nazwa, wojewodztwo, miejscowosc, cena2, przyjazd, ile_dob2, rodzaj_pokoju, pietro2 );
            size_n++;
            break;
           
        case 'h':
            Dane.getline( rodzaj_pokoju, sizeof( rodzaj_pokoju ) );
            Dane.getline( pietro, sizeof( pietro ) );
            pietro2 = atoi( pietro );
            noclegi[ e++ ] = new Hostel( size_n, nazwa, wojewodztwo, miejscowosc, cena2, przyjazd, ile_dob2, rodzaj_pokoju, pietro2 );
            size_n++;
            break;
           
        case 's':
            Dane.getline( wyposazenie, sizeof( wyposazenie ) );
            Dane.getline( szkola, sizeof( szkola ) );
            noclegi[ e++ ] = new Schronisko( size_n, nazwa, wojewodztwo, miejscowosc, cena2, przyjazd, ile_dob2, wyposazenie, szkola );
            size_n++;
            break;
           
        case 'B':
            Dane.getline( pietro, sizeof( pietro ) );
            pietro2 = atoi( pietro );
            noclegi[ e++ ] = new BB( size_n, nazwa, wojewodztwo, miejscowosc, cena2, przyjazd, ile_dob2, pietro2 );
            size_n++;
            break;
           
        case 'p':
            Dane.getline( rodzaj_pokoju, sizeof( rodzaj_pokoju ) );
            noclegi[ e++ ] = new BB( size_n, nazwa, wojewodztwo, miejscowosc, cena2, przyjazd, ile_dob2, rodzaj_pokoju );
            size_n++;
            break;
        }
        i++;
    }
}

void nowyGosc() {
    string imie, nazwisko, pesel;
    int ind = size;
   
    cout << "Podaj imie:\n";
    cin >> imie;
    cout << "Podaj nazwisko:\n";
    cin >> nazwisko;
    cout << "Podaj PESEL:\n";
    cin >> pesel;
   
    osoby[ u++ ] = new Gosc( ind, imie, nazwisko, pesel );
    size++;
}

void dodajNocleg() {
    string nazwa, wojewodztwo, miejscowosc, przyjazd, rodzaj_pokoju, wyposazenie, szkola;
    int cena, ile_dob, pietro;
    char typ, c;
   
    cout << "========DODAWANIE===NOCLEGU===========\n";
    cout << "Typ noclegu\n";
    cout << "(m)otel | (h)ostel | (s)chronisko | (B)B | (p)ensjonat  \n";
    cin >> typ;
    cout << "Nazwa: ";
    cin.ignore();
    getline( cin, nazwa );
    cout << "Wojewodztwo: ";
    getline( cin, wojewodztwo );
    cout << "Miejscowosc: ";
    getline( cin, miejscowosc );
    cout << "Cena: ";
    cin >> cena;
    cout << "Przyjazd (miesiac): ";
    getline( cin, przyjazd );
    cout << "Ile_dob: ";
    cin >> ile_dob;
   
   
    if( typ == 'm' ) {
        cout << "Rodzaj pokoju: ";
        getline( cin, rodzaj_pokoju );
        cout << "Pietro: ";
        cin >> pietro;
       
        noclegi[ e++ ] = new Motel( size_n, nazwa, wojewodztwo, miejscowosc, cena, rodzaj_pokoju, przyjazd, ile_dob, pietro );
        size_n++;
    }
   
    if( typ == 'h' ) {
        cout << "Rodzaj pokoju: ";
        getline( cin, rodzaj_pokoju );
        cout << "Pietro: ";
        cin >> pietro;
       
        noclegi[ e++ ] = new Hostel( size_n, nazwa, wojewodztwo, miejscowosc, cena, rodzaj_pokoju, przyjazd, ile_dob, pietro );
        size_n++;
    }
   
    if( typ == 's' ) {
        cout << "Wyposazenie: ";
        getline( cin, wyposazenie );
        cout << "Szkola: ";
        getline( cin, szkola );
       
        noclegi[ e++ ] = new Schronisko( size_n, nazwa, wojewodztwo, miejscowosc, cena, przyjazd, ile_dob, wyposazenie, szkola );
        size_n++;
    }
   
    if( typ == 'B' ) {
        cout << "Pietro: ";
        cin >> pietro;
        noclegi[ e++ ] = new BB( size_n, nazwa, wojewodztwo, miejscowosc, cena, przyjazd, ile_dob, pietro );
        size_n++;
    }
   
    if( typ == 'p' ) {
        cout << "Rodzaj pokoju: ";
        getline( cin, rodzaj_pokoju );
        noclegi[ e++ ] = new Pensjonat( size_n, nazwa, wojewodztwo, miejscowosc, cena, rodzaj_pokoju, przyjazd, ile_dob );
        size_n++;
    }
   
    cout << "======================================\n";
    getch();
}

void wyswietlGosci() {
    int k = 0;
    char g = 0;
   
    do {
        osoby[ k ]->daneOsobowe();
        cout << "\n\t[z] poprzedni || [x] nastepny || [q] powrot do menu\n";
        g = getch();
        switch( g ) {
        case 'x':
            {
                if( k < size - 1 )
                     k++;
               
                break;
            }
        case 'z':
            {
                if( k > 0 )
                     k--;
               
                break;
            }
        }
        system( "CLS" );
    } while(( g == 'z' ) ||( g == 'x' ) );
   
}

void wyswietlNoclegi() {
    int n = 0;
    char g = 0;
   
    do {
        noclegi[ n ]->wyswietlNocleg();
        cout << "[z] poprzedni || [x] nastepny \n";
        cout << "[u] usun ostatni ||[q] powrot do menu\n";
        g = getch();
        switch( g ) {
        case 'x':
            {
                if( n < size_n - 1 )
                     n++;
               
                break;
            }
        case 'z':
            {
                if( n > 0 )
                     n--;
               
                break;
            }
        case 'u':
            {
                size_n--;
                e--;
                n--;
                cout << "USUNIETO!";
                _sleep( 1000 );
                break;
            }
           
        }
        system( "CLS" );
    } while(( g == 'z' ) ||( g == 'x' ) ||( g == 'u' ) );
   
}

void menu()
{
    cout << "\n===============NOCLEGI==================\n";
    cout << "\t\t[1] Przegladaj noclegi \n";
    cout << "\t\t[2] Dodaj nocleg \n";
    cout << "\t\t[3] Goscie\n";
    cout << "\t\t[4] Dodaj goscia\n";
    cout << "\t\t[q] Wyjscie";
    cout << "\n======================================================\n\n";
}

int main()

{
    odczytZPliku();
    odczytZPlikuOsob();
   
   
    int koniec = 0;
    char wybor;
   
    while( !koniec ) {
        system( "cls" );
        menu();
        wybor = getch();
        switch( wybor ) {
        case '2':
            system( "CLS" );
            dodajNocleg();
            system( "CLS" );
            menu();
            break;
           
        case '3':
            system( "CLS" );
            wyswietlGosci();
            break;
           
        case '1':
            system( "CLS" );
            wyswietlNoclegi();
            break;
           
        case '4':
            system( "CLS" );
            nowyGosc();
            system( "CLS" );
            menu();
            break;
           
        case 'q':
            system( "CLS" );
            koniec = 1;
            break;
        }
       
    }
   
    zapisDoPliku();
    zapis_do_pliku();
   
    return 0;
}
C/C++
#ifdef NOCLEG_H
#define NOCLEG_H
#include <string.h>

int ID = 0;

class nocleg
    : public Gosc
{
public:
    nocleg() { };
    nocleg( string typ, string nazwa, string wojewodztwo, string miejscowosc, int cena, string przyjazd, int ile_dob )
    {
        ID++;
    }
   
    void setNazwa( string nazwa ) {
        this->nazwa = nazwa;
    }
   
    string getNazwa() {
        return this->nazwa;
    }
   
    void setRodzaj_pokoju( string rodzaj_pokoju ) {
        this->rodzaj_pokoju = rodzaj_pokoju;
    }
   
    string getRodzaj_pokoju() {
        return this->rodzaj_pokoju;
    }
   
    void setPietro( int pietro ) {
        this->pietro = pietro;
    }
   
    int getPietro() {
        return this->pietro;
    }
   
    string getSzkola() {
        return this->szkola;
    }
   
    string getWyposazenie() {
        return this->wyposazenie;
    }
   
    void setWojewodztwo( string wojewodztwo ) {
        this->wojewodztwo = wojewodztwo;
    }
   
    string getWojewodztwo() {
        return this->wojewodztwo;
    }
   
    void setMiejscowosc( string miejscowosc ) {
        this->miejscowosc = miejscowosc;
    }
   
    string getMiejscowosc() {
        this->miejscowosc;
    }
    void setID( int s ) { nrID = s; }
   
    int getID() { return nrID; }
   
    void setCena( int cena ) {
        this->cena = cena;
    }
   
    int getCena() {
        return this->cena;
    }
   
    void setPrzyjazd( string przyjazd ) {
        this->przyjazd = przyjazd;
    }
   
    string getPrzyjazd() {
        return this->przyjazd;
    }
   
    void setIle_dob( int ile_dob ) {
        this->ile_dob = ile_dob;
    }
   
    int getIle_dob() {
        return this->ile_dob;
    }
    virtual string getTyp() = 0;
    virtual void wyswietlNocleg() {
    }
   
private:
   
    string nazwa, wojewodztwo, miejscowosc, przyjazd, rodzaj_pokoju, wyposazenie, szkola;
    int cena, ile_dob, pietro, nrID;
};
#endif
P-85417
bingo009
» 2013-06-12 21:56:56
W kodzie nocleg.h chyba powinny być same prototypy funkcji, a nie odrazu z funkcje z ciałem.
P-85450
pekfos
» 2013-06-12 22:06:17
W kodzie nocleg.h chyba powinny być same prototypy funkcji, a nie odrazu z funkcje z ciałem.
W tym przypadku to bez znaczenia.
P-85453
unimator
» 2013-06-13 10:23:57
Zamiast
C/C++
#ifdef NOCLEG_H
#define NOCLEG_H
powinno być tak:
C/C++
#ifndef NOCLEG_H
#define NOCLEG_H
P-85475
« 1 »
  Strona 1 z 1