Jak używa się plików nagłówkowych?

Odpowiedz Nowy wątek
2014-12-18 11:18
0

Mam taki kod:

include<stdlib.h>
#include<stdio.h>
#include<iostream>
#include<conio.h>
#include<string>
 
using namespace std;
 
struct Osoba
 
{
    string imie, nazwisko;
    int wiek, wzrost;
    float waga;
};
 
void Wyswietl_wsk(Osoba *os)
{
    for (int i = 0; i < 5; i++)
    {
        cout << (os+i)->imie << " " << (os+i)->nazwisko << " " << (os+i)->wiek << " lat " << (os+i)->wzrost << " cm " << (os+i)->waga << " kg" << endl;
 
    }
}
 
void wczytaj_wsk(Osoba *os)
{
    for (int i = 0; i < 5; i++)
    {
        cout << "Wprowadz imie: ";
        cin >> (os+i)->imie;
        cout << "Wprowadz nazwisko: ";
        cin >> (os+i)->nazwisko;
        cout << "Wprowadz wiek: ";
        cin >> (os+i)->wiek;
        cout << "Wprowadz wzrost: ";
        cin >> (os+i)->wzrost;
        cout << "Wprowadz wage: ";
        cin >> (os+i)->waga;
        cout << endl;
    }
 
}
 
int main()
{
    Osoba os[5];
wczytaj_wsk(&os[0]);
 
    cout << "\n";
 
    Wyswietl_wsk (os);
 
    _getch();
}

Mam podzielić ten kod na 3 pliki, 1 nagłówkowy z deklaracji struktury i funkcji, drugi osoba z zawartością funkcji, trzecia z funkcją main. Moje pliki wyglądają tak:

Header.h -> http://wklej.org/id/1561619/

Osoba.cpp -> http://wklej.org/id/1561620/

Source.cpp -> http://wklej.org/id/1561621/

Kompiluję mam błędy:

1.jpg

Co robię źle?

poprawienie tagów wątku i dodanie obrazka do załączników posta - @furious programming

  • 1.jpg (0,04 MB) - ściągnięć: 43
edytowany 3x, ostatnio: furious programming, 2014-12-18 14:43
oczywiście chodziło tylko o durne klamry których nie powinno być w header.h - SPOJowiecaa 2014-12-18 11:31
Po raz n-ty przypominam o dodawaniu obrazków do załączników postów; - furious programming 2014-12-18 14:44

Pozostało 580 znaków

2014-12-18 11:29
0

hmm

void Wyswietl_wsk(Osoba *os)
{
} 

zastąp

void Wyswietl_wsk(Osoba *os); 

I podobnie z resztą metod
Poza tym - czemu nie robisz tego normalnie na klasie?

PS. Pierwsze ostrzeżenie - zobacz na pierwszą linię kodu i drugą - czego brakuje w pierwszej?

edytowany 2x, ostatnio: misiakufal, 2014-12-18 11:31
Jakbyś określił jeszcze w którym pliku. - SPOJowiecaa 2014-12-18 11:52

Pozostało 580 znaków

2014-12-18 11:37
0

W nagłówkowym tylko deklarujesz fukcje, zatem nie:

void Wyswietl_wsk(Osoba *os)
{
}

tylko

void Wyswietl_wsk(Osoba *os);

W pliku Source.cpp powinien być

#include "Osoba.cpp"

Po co Ci to wszystko:

#include<stdlib.h>
#include<stdio.h>
#include<iostream>
#include<conio.h>
#include<string>

skoro używasz tylko iostream ?


"There are people who actually like programming. I don't understand why they like programming."
Rasmus Lerdorf
Pokaż pozostałe 6 komentarzy
Tak, dlatego był błąd. Poczytaj czym różni się deklarowanie od definiowania metody i co powinno się znajdować w pliku nagłówkowym. - Vardamir 2014-12-18 12:11
Czytałem, i już wiem. Więc błędem nie było dołączanie tylu bibliotek. - SPOJowiecaa 2014-12-18 12:13
Ale ja nie powiedziałem, że to był powód tego błędu. Tylko zapytałem dlaczego dołączasz biblioteki, z których nie korzystasz i staraliśmy się wytłumaczyć Ci, że jest to zła praktyka. - Vardamir 2014-12-18 12:16
Więc się pytam czy kompilator, jeśli nie będzie w moim kodzie, jakiejś funkcji korzystając z biblioteki którą załączyłem to i tak ją załaduję pomimo tego? - SPOJowiecaa 2014-12-18 12:19
Dołączając całe to tałatajstwo wydłużasz proces kompilacji. Ponadto, w samych nagłówkach powinny być dołączane wyłącznie >niezbędne< nagłówki. Reszta wciąż do źródeł. - spartanPAGE 2014-12-18 14:30

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0