• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Klasy c++, problem z plikami .h i .cpp

0 głosów
842 wizyt
pytanie zadane 25 września 2019 w C i C++ przez Wiktor Michalski Początkujący (430 p.)
zamknięte 26 września 2019 przez Wiktor Michalski

Cześć!

Ostatnio zacząłem uczyć się klas i napotkałem problem : undefined reference to 'Nowa_ocena::dodaj_ocene()'.

Chciałbym poznać przyczynę tego błędu bo jak oglądałem filmu u pana Zelenta lub inne filmiki na yt nie widziałem różnic w kodzie.

Kod maina:

#include <iostream>
#include <fstream>
#include <cstdlib>
#include "klasy.h"
using namespace std;

void odczytaj_oceny()
{
    fstream plik;
    plik.open("oceny.txt", ios::in);
    string linia;
    string oceny[500];
    while(getline(plik, linia))
    {
        cout<<linia<<endl;
    }
    cout<<endl;

    plik.close();
}
int menu(int option)
{
    cout<<"Menu:"<<endl;
    cout<<"1.Nowa ocena"<<endl;
    cout<<"2.Koniec"<<endl;
    cout<<"Podaj numer(1-2) opcji: ";
    cin>>option;
    return option;
}

int wybor(int opcja)
{
    if(opcja==1)
    {
        int ile_ocen;
        cout<<"Podaj ile ocen chesz dodac: "<<endl;
        cin>>ile_ocen;
        Nowa_ocena oceny[500];
        for(int i=0; i<ile_ocen; i++)
        {
            oceny[i].dodaj_ocene();
            fstream plik;
            plik.open("oceny.txt", ios::out | ios::app);
            plik<<"Twoja ocena to: "<<oceny[i].ocena<<", a jej waga to <<oceny[i].waga_oceny<<" z przedmiotu "<<oceny[i].przedmiot<<" za "<<oceny[i].za_co<<endl;
            plik.close();
        }
    system( "cls" );
    odczytaj_oceny();
    int option, opcja;
    opcja=menu(option);
    wybor(opcja);
    }
    else if(opcja==2)
    {
        cout<<endl<<"Do zobaczenia! :)"<<endl;
        exit(0);
    }
    else{
    system("cls");
    cout<<"Blad"<<endl;
    odczytaj_oceny();
    int option, opcja;
    opcja=menu(option);
    wybor(opcja);
    }
    return opcja;
}


int main()
{
    odczytaj_oceny();
    int option, opcja;
    opcja=menu(option);
    wybor(opcja);


    return 0;
    }

Kod klasy.h :

#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;

class Nowa_ocena
{
    public:
    string przedmiot;
    string za_co;
    float ocena;
    int waga_oceny;

    void dodaj_ocene();
};

Kod klasy.cpp :

#include <iostream>
#include <fstream>
#include <cstdlib>
#include "klasy.h"

using namespace std;

void Nowa_ocena::dodaj_ocene()
{
    cout<<"Podaj ocene"<<endl;
    cin>>ocena;
    cout<<"Podaj wage oceny"<<endl;
    cin>>waga_oceny;
    cout<<"Podaj przedmiot"<<endl;
    cin>>przedmiot;
    cout<<"Podaj temat oceny"<<endl;
    cin>>za_co;
}

 

 

komentarz zamknięcia: sdfg
komentarz 26 września 2019 przez DragonCoder Nałogowiec (36,500 p.)
1. Nie lepiej jest stworzyc klase przedmiot i w niej miec vektor ocen?

2. Te zmienne nie powinny byc public, tylko private, a Twoje funkcje publiczne.

2 odpowiedzi

0 głosów
odpowiedź 25 września 2019 przez SimiVoid Pasjonat (19,790 p.)

Każdy plik *.h powinie mieć jedną z poniższych struktur:

1.

#pragma once

Tutaj właściwy kod

2.

#ifndef FILENAME_H //FILENAME - nazwa twojego pliku
#define FILENAME_H

Tutaj właściwy kod

#endif

 

komentarz 26 września 2019 przez tkz Nałogowiec (42,040 p.)
O ile nie dbasz czy piszesz zgodnie ze standardem, to używaj #pragma once, w przeciwnym wypadku #define i reszty.
0 głosów
odpowiedź 26 września 2019 przez j23 Mędrzec (195,220 p.)

Dodaj klasy.cpp do projektu. Samo załączenie pliku nagłówkowego nie załatwia sprawy.

Podobne pytania

0 głosów
1 odpowiedź 1,311 wizyt
0 głosów
3 odpowiedzi 522 wizyt
pytanie zadane 2 kwietnia 2020 w C i C++ przez qwx6 Początkujący (300 p.)
0 głosów
2 odpowiedzi 2,265 wizyt
pytanie zadane 30 listopada 2015 w C i C++ przez C☺ndzi Stary wyjadacz (12,100 p.)

93,771 zapytań

142,731 odpowiedzi

323,383 komentarzy

63,371 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...