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

error zmienne was not declared in this scope

Ostatnio zmodyfikowano 2016-11-29 16:03
Autor Wiadomość
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.
P-154271
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?
P-154272
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.
P-154274
karambaHZP
» 2016-11-29 15:10:28
zmienne z pliku klasa.h Chyba że się mylę to wyprowadźcie mnie z błędu.
C/C++
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?
P-154275
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
C/C++
#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
C/C++
#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
C/C++
#include <iostream>
#include "klasa.h"

using namespace std;

int main()
{
    Glowna g1;
    g1.menu();
    g1.pobierz_dane();
}
P-154276
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
P-154277
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ę:
C/C++
#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; // choć ta metoda narusza SRP, to na początek niech zostanie
};

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.
P-154278
michal11
» 2016-11-29 16:03:51
C/C++
void pokaz_dane( std::ostream & out ) const; // choć ta metoda narusza SRP, to na początek niech zostanie

to już nie wyglada tak najgorzej, i dzięki temu można później napisać
C/C++
ostream & operator >>( ostream & out, const Samochod & samochod )
{
    samochod.pokaz_dane( out );
    return out;
}
//...
cout << samochod;
P-154279
1 « 2 »
Poprzednia strona Strona 2 z 2