sobol3k Temat założony przez niniejszego użytkownika |
» 2016-11-29 14:47:22 Przeczytałem zakładke o metodach i nadal nie czaje co robię źle kombinuję jak mogę a i tak wywala błędy i nie da się skompilować tego. Jest tam przykład dla funkcji zwracających a moja nic nie zwracają bo są voidami. |
|
karambaHZP |
» 2016-11-29 14:49:42 void pobierz_dane( string m, string mo, int r, float p, string t, int l ); |
Pytanie podstawowe. Co ta metoda pobiera? |
|
sobol3k Temat założony przez niniejszego użytkownika |
» 2016-11-29 15:05:07 zmienne z pliku klasa.h Chyba że się mylę to wyprowadźcie mnie z błędu. |
|
karambaHZP |
» 2016-11-29 15:10:28 zmienne z pliku klasa.h Chyba że się mylę to wyprowadźcie mnie z błędu.
void pobierz_dane( string m, string mo, int r, float p, string t, int l ) { system( "cls" ); cout << "Podaj marke: "; cin >> m; cout << endl; cout << "Podaj model: "; cin >> mo; cout << "Podaj rocznik: "; cin >> r; cout << "Podaj pojemnosc silnika: "; cin >> p; cout << endl; cout << "Podaj typ paliwa (disesel/benzyna): "; cin >> t; cout << "Podaj ilosc drzwi (3/4/5): "; cin >> l; } |
Ta metoda pobiera dane od użyszkodnika do prywatnych pól "twojej klasy"? (a raczej powinna, ale nie zgadzają się identyfikatory). Ta metoda nie powinna mieć ani jednego argumentu. Popraw nazewnictwo identyfikatorów. Edit: może zaczniemy od początku pisać ten kod. Krok po kroku, aby zrozumieć co i jak? |
|
sobol3k Temat założony przez niniejszego użytkownika |
» 2016-11-29 15:21:31 Okej a więc skasowałem argumenty z funkcji i teraz żadnych argumentów nie przyjmuje zaś poziom dostępu dla zmiennych i funkcji ustawiłem na public. Teraz wygląda to tak: klasa.h #include <iostream>
using namespace std;
class Glowna { public: string marka; string model; string typ_paliwa; string kolor; int rocznik; float pojemnosc_silnika; void menu(); void pobierz_dane(); void pokaz_dane(); };
funkcje.cpp #include <iostream> #include <windows.h> #include "klasa.h"
using namespace std;
void Glowna::menu() { unsigned short wybor; cout << "BAZA SAMOCHODOW" << endl; cout << "---------------" << endl; cout << "1. Dodaj samochod do bazy" << endl; cout << "2. Wczytaj baze samochodow" << endl; cout << "3. Wyjdz" << endl << endl; cout << "Twoj wybor: "; cin >> wybor; switch( wybor ) { case 1: { } case 2: { } case 3: { } } }
void pobierz_dane() { system( "cls" ); cout << "Podaj marke: "; cin >> marka; cout << endl; cout << "Podaj model: "; cin >> model; cout << endl; cout << "Podaj typ paliwa (disesel/benzyna): "; cin >> typ_paliwa; cout << endl cout << "Podaj kolor: "; cin >> kolor; cout << "Podaj rocznik: "; cin >> rocznik; cout << "Podaj pojemnosc silnika: "; cin >> pojemnosc_silnika; cout << endl; }
main.cpp #include <iostream> #include "klasa.h"
using namespace std;
int main() { Glowna g1; g1.menu(); g1.pobierz_dane(); }
|
|
Anim |
» 2016-11-29 15:34:16 ech... co znaczy "marka/.../silnik was not declarated in this scope" ? w funkcji pobierz_dane() te zmienne nie są znane...
Nikt nie ma zamiaru tutaj przeprowadzać kursu z obiektowości, bo taki kurs już jest... więc odezwij się do kogoś prywatnie, albo wróć do kursu. Napisz małą klasę... albo nawet nie. napisz najpierw sobie strukturę, i pobaw się obiektami struktury. Nadawaniem wartości obiektom. Potem stwórz klasę, z jedną funkcją publiczną, potem kombinuj powoli... Kilka godzin próbujesz przeskoczyć problem, nie mając podstaw z programowania proceduralnego. Tak się nie da - chyba, że tylko ja nie potrafię (może zbyt trudno chłonę wiedzę).
To tylko moja rada...
Ps: Domyślam się, że niedługo temat wyląduje w koszu jako jeden wielki spam :D |
|
karambaHZP |
» 2016-11-29 15:42:25 Nikt nie ma zamiaru tutaj przeprowadzać kursu z obiektowości, bo taki kurs już jest... |
Mam chwilę, to spróbuję ci to wyjaśnić. więc odezwij się do kogoś prywatnie |
GG 59104703. Na początek spróbuj uzupełnić taką kompozycję: #include <iostream> #include <string> #include <vector>
class Samochod { std::string marka; std::string model; std::string typ_paliwa; std::string kolor; int liczba_drzwi; int rocznik; float pojemnosc_silnika; public: void pobierz_dane_od_uzytkownika(); void pokaz_dane() const; };
void Samochod::pobierz_dane_od_uzytkownika() { }
void Samochod::pokaz_dane() const { }
class Katalog_samochodow { std::vector < Samochod > samochody; public: void dodaj_samochod(); void pokaz_samochody() const; };
void Katalog_samochodow::dodaj_samochod() { }
void Katalog_samochodow::pokaz_samochody() const { }
int main() { Katalog_samochodow samochody; samochody.dodaj_samochod(); samochody.pokaz_samochody(); } down: Taki jest plan. Na początek niech złapie co to są pola prywatne. |
|
michal11 |
» 2016-11-29 16:03:51 void pokaz_dane( std::ostream & out ) const;
to już nie wyglada tak najgorzej, i dzięki temu można później napisać ostream & operator >>( ostream & out, const Samochod & samochod ) { samochod.pokaz_dane( out ); return out; }
cout << samochod;
|
|
1 « 2 » |