Błąd podczas kompilacji visual studio [C++]

Odpowiedz Nowy wątek
2015-02-10 17:25
0

Witam podczas nauki stworzyłem klasę która dziedziczy po innej klasie lecz nie chce mi się to kompilować i pokazuje mi taki error Error 1 error C2084: function 'Uczen::Uczen(std::string,float,int,std::string,std::string,std::string,int,int,float,float)' already has a body
Wiem ,żę to jest głupi program itp lecz dopiero się uczę programować i chce po nauczeniu się kolejnych działów dodawać nowe rzeczy do kodu.

#include "Uczen.h"
#include "Szkoła.h"
#include<iostream>
#include<fstream>

Uczen::Uczen(std::string nss , float oo , int iuu,std::string imieu, std::string nazwiskou, std::string miejscowscu, int peselu, int roku, float ocenau, float sredniau) :Szkola(nss, oo, iuu)
{
    imie=imieu;
    nazwisko=nazwiskou;
    miejscowsc=miejscowscu;
    pesel=peselu;
    rok_urodzenia=roku;
    ocena=ocenau;
    srednia = sredniau;

}

Uczen::~Uczen()
{
}
void Uczen::dodawanie_ucznia()
{
    std::fstream plik;
    plik.open(Szkola::fnazwa_szkoly(), std::ios::out);
    if (plik.good())
    {
        plik << std::endl;
        std::cout << "podaj imie ucznia: ";
        std::cin >> imie;
        plik << "Imie ucznia: " << imie << std::endl;
        std::cout << "podaj nazwisko ucznia: ";
        std::cin >> nazwisko;
        plik << "Nazwisko ucznia: " << nazwisko << std::endl;
        std::cout << "podaj pesel ucznia ";
        std::cin >> pesel;
        plik << "Pesel ucznia: " << pesel << std::endl;
    }
    else
    {
        std::cout << "error w uczniu nie da sie dodac do pliku jego specyfikacji!!!!!!!!!!!!!!!!!!!!  " << std::endl;
    }

} 

Pozostało 580 znaków

2015-02-10 17:32
0

Jako, że nie podałeś kodu Uczen.h to fusy mi powiedziały, że masz w klasie

Uczen(.....) {}

zamiast

Uczen(.....);

BTW użyj listy inicjalizacyjnej w konstruktorze zamiast przypisań.

Pozostało 580 znaków

2015-02-10 17:38
0

to jest moja uczen.h lecz jak zmienię tak jak mi napisałeś to wyskakują tylko kolejne błędy.

#pragma once
#include "Szkoła.h"

class Uczen :public Szkola
{
    std::string imie;
    std::string nazwisko;
    std::string miejscowsc;
    int pesel;
    int rok_urodzenia;
    float ocena;
    float srednia;

public:

    Uczen(std::string ns = "wa", float o = 0, int iu = 0, std::string imieu = "brak imienia", std::string nazwiskou = "bez nazwiska", std::string miejscowscu = "Bez miejscowosci", int peselu = 0, int roku = 0, float ocenau = 0, float sredniau = 0) : Szkola(ns, o, iu){}
    ~Uczen();

    void dodawanie_ucznia();

};

Pozostało 580 znaków

2015-02-10 17:41
0

z tym dziedziczeniem po szkoła to przegiąłeś,

dla każdego nowego ucznia tworzysz nową szkołę teraz

szkoła powinna zawierać std::vector<uczen>

edytowany 1x, ostatnio: gośćabc, 2015-02-10 18:26

Pozostało 580 znaków

2015-02-10 17:42
1

Po prostu

Uczen(std::string ns = "wa", float o = 0, int iu = 0, std::string imieu = "brak imienia", std::string nazwiskou = "bez nazwiska", std::string miejscowscu = "Bez miejscowosci", int peselu = 0, int roku = 0, float ocenau = 0, float sredniau = 0);

To wygląda strasznie, ale myślę że o tym wiesz.
Z ciekawości, po co u na końcu nazw zmiennych?

Pozostało 580 znaków

2015-02-10 17:42
0

dziekuje za pomoc ale teraz nie wiem czemu nie chce mi dopisywać do pliku o wczesniej zadanej nazwie dalszych informacji. dopisywałem "u" żeby łatwjej mi było odróżnić typy zmienych tych w klasie od tych w konstruktorze

edytowany 1x, ostatnio: weider78, 2015-02-10 17:44

Pozostało 580 znaków

2015-02-10 17:55
0

Jakbyś użył listy inicjalizacyjnej to byś nie musiał odróżnić.
Nigdzie nie podałeś flagi, że chcesz dopisać, to czemu miałoby dopisać.

Pozostało 580 znaków

2015-02-10 17:59
0

ale nawet po dopisaniu ios::app nic nie zmienia wg chyba nie przekazuje nazwy szkoly

Pozostało 580 znaków

2015-02-10 18:06
0

No to sprawdź co tamta funkcja fnazwa_szkoly() zwraca. I to f jest bardzo brzydkie.

Pozostało 580 znaków

2015-02-10 19:02
0

tworzy plik o nazwie takiej jak jest w konstruktorze domyślnym.

pokaż implementację Szkoły, bo widzę że tak to możemy do rana - twonek 2015-02-10 19:05

Pozostało 580 znaków

2015-02-10 19:15
0

więc tak
szkola.h

#pragma once
#include<iostream>
#include<string>
#include "Szkoła.h"

class Szkola
{
    int ilosc_uczniow;
    float oceny;

public:
    Szkola(std::string ns , float o, int iu);
    ~Szkola();
    std::string nazwa_szkoly;

    int filosc_uczniow(){ return ilosc_uczniow; };
    std::string fnazwa_szkoly(){ return nazwa_szkoly; };
    void dodawanie_szkoly();
};

uczen.h

#pragma once
#include "Szkoła.h"

class Uczen :public Szkola
{
    std::string imie;
    std::string nazwisko;
    std::string miejscowsc;
    int pesel;
    int rok_urodzenia;
    float ocena;
    float srednia;

public:

    Uczen(std::string ns = "wa", float o = 0, int iu = 0, std::string imieu = "brak imienia", std::string nazwiskou = "bez nazwiska", std::string miejscowscu = "Bez miejscowosci", int peselu = 0, int roku = 0, float ocenau = 0, float sredniau = 0);
    ~Uczen();

    void dodawanie_ucznia();

};

szkola.cpp

 #include<iostream>
#include "Szkoła.h"
#include<fstream>

Szkola::Szkola(std::string ns, float o, int iu)
{

    nazwa_szkoly = ns;
    oceny = o;
    ilosc_uczniow = iu;

}

Szkola::~Szkola()
{
}
void Szkola::dodawanie_szkoly()
    {
    std::cout << "Podaj nazwe szkoły: ";
    std::cin >> nazwa_szkoly;
    std::cout << "Ile uczniów posiada szkola: ";
    std::cin >> ilosc_uczniow;
    std::fstream plik;
    plik.open(nazwa_szkoly, std::ios::out);
    if (!plik.good())
        std::cout << "nie otwarto pliku do zapisu error!!! ";
    else
    {
        plik << "Nazwa szkolu: " << nazwa_szkoly << std::endl;
        plik << "Ilosc uczni " << ilosc_uczniow << std::endl;

    }
    plik.close();
}

uczen.cpp

#include "Uczen.h"
#include "Szkoła.h"
#include<iostream>
#include<fstream>

Uczen::Uczen(std::string nss , float oo , int iuu,std::string imieu, std::string nazwiskou, std::string miejscowscu, int peselu, int roku, float ocenau, float sredniau) :Szkola(nss, oo, iuu)
{
    imie=imieu;
    nazwisko=nazwiskou;
    miejscowsc=miejscowscu;
    pesel=peselu;
    rok_urodzenia=roku;
    ocena=ocenau;
    srednia = sredniau;

}

Uczen::~Uczen()
{
}
void Uczen::dodawanie_ucznia()
{

    std::fstream plik;

    plik.open(Szkola::fnazwa_szkoly(), std::ios::out||std::ios::app);
    if (plik.good())
    {
        plik << std::endl;
        std::cout << "podaj imie ucznia: ";
        std::cin >> imie;
        plik << "Imie ucznia: " << imie << std::endl;
        std::cout << "podaj nazwisko ucznia: ";
        std::cin >> nazwisko;
        plik << "Nazwisko ucznia: " << nazwisko << std::endl;
        std::cout << "podaj pesel ucznia ";
        std::cin >> pesel;
        plik << "Pesel ucznia: " << pesel << std::endl;
    }
    else
    {
        std::cout << "error w uczniu nie da sie dodac do pliku jego specyfikacji!!!!!!!!!!!!!!!!!!!!  " << std::endl;
    }

} 

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