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

struktura jak tworzyc obiekt

Ostatnio zmodyfikowano 2015-11-07 12:21
Autor Wiadomość
polsky77
Temat założony przez niniejszego użytkownika
struktura jak tworzyc obiekt
» 2015-11-04 22:59:37
Hej;
mam strukture zawodnik.
Probuje zrobic dwa obiekty napad_1 i napad_2.
Następnie chce wsadzic wartosci zmiennych tych obiektów do funkcji.
Niestety program mi sie wysypuje:

||=== Build: Debug in mecz (compiler: Copy of GNU GCC Compiler) ===|
D:\C++\mecz\boisko.h|17|warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11 [enabled by default]|
D:\C++\mecz\boisko.h|18|warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11 [enabled by default]|
D:\C++\mecz\main.cpp||In function 'int main()':|
D:\C++\mecz\main.cpp|40|error: no matching function for call to 'zawodnik::zawodnik()'|
D:\C++\mecz\main.cpp|40|note: candidates are:|
D:\C++\mecz\zawodnik.h|21|note: zawodnik::zawodnik(std::string)|
D:\C++\mecz\zawodnik.h|21|note:   candidate expects 1 argument, 0 provided|
D:\C++\mecz\zawodnik.h|20|note: zawodnik::zawodnik(int)|
D:\C++\mecz\zawodnik.h|20|note:   candidate expects 1 argument, 0 provided|
D:\C++\mecz\zawodnik.h|19|note: zawodnik::zawodnik(double)|
D:\C++\mecz\zawodnik.h|19|note:   candidate expects 1 argument, 0 provided|
D:\C++\mecz\zawodnik.h|7|note: zawodnik::zawodnik(const zawodnik&)|
D:\C++\mecz\zawodnik.h|7|note:   candidate expects 1 argument, 0 provided|
D:\C++\mecz\main.cpp|45|error: no matching function for call to 'zawodnik::zawodnik()'|
D:\C++\mecz\main.cpp|45|note: candidates are:|
D:\C++\mecz\zawodnik.h|21|note: zawodnik::zawodnik(std::string)|
D:\C++\mecz\zawodnik.h|21|note:   candidate expects 1 argument, 0 provided|
D:\C++\mecz\zawodnik.h|20|note: zawodnik::zawodnik(int)|
D:\C++\mecz\zawodnik.h|20|note:   candidate expects 1 argument, 0 provided|
D:\C++\mecz\zawodnik.h|19|note: zawodnik::zawodnik(double)|
D:\C++\mecz\zawodnik.h|19|note:   candidate expects 1 argument, 0 provided|
D:\C++\mecz\zawodnik.h|7|note: zawodnik::zawodnik(const zawodnik&)|
D:\C++\mecz\zawodnik.h|7|note:   candidate expects 1 argument, 0 provided|
D:\C++\mecz\main.cpp|61|error: request for member 'value_x' in 'napad_1', which is of pointer type 'zawodnik*' (maybe you meant to use '->' ?)|
D:\C++\mecz\main.cpp|61|error: 'matryca_poz' was not declared in this scope|
D:\C++\mecz\main.cpp|80|error: 'x_zaw_a1' was not declared in this scope|
D:\C++\mecz\main.cpp|80|error: 'nr_zaw_a1' was not declared in this scope|
D:\C++\mecz\main.cpp|80|error: 'typ_zaw_a1' was not declared in this scope|
||=== Build failed: 7 error(s), 2 warning(s) (0 minute(s), 1 second(s)) ===|

Poniżej program

struktura zawodnik:
plik .h
C/C++
struct zawodnik
{
   
    int nr_zaw;
    string typ_zaw;
    double zaw_x;
   
   
    int value_nr;
    string value_typ;
    double value_x;
   
    zawodnik( double value_x )
        : zaw_x( value_x )
    { }
    zawodnik( int value_nr )
        : nr_zaw( value_nr )
    { }
    zawodnik( string value_typ )
        : typ_zaw( value_typ )
    { }
   
   
    void matryca_poz( double x, int * matryca )
   
    {
        int ile = x;
       
        matryca[ ile ] = 2000;
       
        cout << matryca[ ile ] << "  matryca klasa" << ile << endl;
    }
   
   
   
};

plik main:

C/C++
zawodnik * napad_1 = new zawodnik;
napad_1->nr_zaw = 80;
napad_1->typ_zaw = "WR";
napad_1->zaw_x = 3200;

zawodnik * napad_2 = new zawodnik;
napad_2->nr_zaw = 13;
napad_2->typ_zaw = "QB";
napad_2->zaw_x = 3000;

Gdzie jest blad?
Dzieki za pomoc:)
P-139660
pekfos
» 2015-11-04 23:19:39
Musisz podać argument konstruktora przy tworzeniu obiektu.
P-139661
polsky77
Temat założony przez niniejszego użytkownika
» 2015-11-04 23:41:13
pekfos, mozesz mi napisac jakis przyklad jak taki argument powinien wygladac?
P-139662
carlosmay
» 2015-11-05 00:02:29
C/C++
zawodnik napad_1( 80 );
zawodnik * p_napad_1 = & napad_1;
p_napad_1->nr_zaw = 80;
p_napad_1->typ_zaw = "WR";
p_napad_1->zaw_x = 3200;
 a tak nie wystarczy? Domyślam się, że chcesz ustawić wskaźnik na obiekt.
Czy nowa pamięć na obiekt jest konieczna?
C/C++
zawodnik * napad_2 = new zawodnik( 13 );
napad_2->nr_zaw = 13;
napad_2->typ_zaw = "QB";
napad_2->zaw_x = 3000;
 ???
P-139663
polsky77
Temat założony przez niniejszego użytkownika
» 2015-11-07 11:47:29
dzieki carlosmay.
Ale wciaz mam problem:(
jak mam teraz wpisac wartosc zmiennej p_napad_1->zaw_x do funkcji matryca_poz ?
Zrobiłem to w ten sposób:
plik main:
C/C++
zawodnik napad_1( 80 );
zawodnik * p_napad_1 = & napad_1;
p_napad_1->nr_zaw = 80;
p_napad_1->typ_zaw = "WR";
p_napad_1->zaw_x = 3200;

zawodnik.matryca_poz( p_napad_1.value_x, matryca );

plik zawodnik.h :

C/C++
struct zawodnik
{
   
    int nr_zaw;
    string typ_zaw;
    double zaw_x;
   
   
    int value_nr;
    string value_typ;
    double value_x;
   
    zawodnik( double value_x )
        : zaw_x( value_x )
    { }
    zawodnik( int value_nr )
        : nr_zaw( value_nr )
    { }
    zawodnik( string value_typ )
        : typ_zaw( value_typ )
    { }
   
   
    void matryca_poz( double x, int * matryca )
   
    {
        int ile = x;
       
        matryca[ ile ] = 2000;
       
        cout << matryca[ ile ] << "  matryca klasa" << ile << endl;
    }

Niestety wyskakuje mi komunikat:

D:\C++\mecz\main.cpp|66|error: expected unqualified-id before '.' token

Czy mozecie mi jeszcze raz pomóc? Dzieki za cierpliowść:)
P-139736
polsky77
Temat założony przez niniejszego użytkownika
» 2015-11-07 11:47:49
dzieki carlosmay.
Ale wciaz mam problem:(
jak mam teraz wpisac wartosc zmiennej p_napad_1->zaw_x do funkcji matryca_poz ?
Zrobiłem to w ten sposób:
plik main:
C/C++
zawodnik napad_1( 80 );
zawodnik * p_napad_1 = & napad_1;
p_napad_1->nr_zaw = 80;
p_napad_1->typ_zaw = "WR";
p_napad_1->zaw_x = 3200;

zawodnik.matryca_poz( p_napad_1.value_x, matryca );

plik zawodnik.h :

C/C++
struct zawodnik
{
   
    int nr_zaw;
    string typ_zaw;
    double zaw_x;
   
   
    int value_nr;
    string value_typ;
    double value_x;
   
    zawodnik( double value_x )
        : zaw_x( value_x )
    { }
    zawodnik( int value_nr )
        : nr_zaw( value_nr )
    { }
    zawodnik( string value_typ )
        : typ_zaw( value_typ )
    { }
   
   
    void matryca_poz( double x, int * matryca )
   
    {
        int ile = x;
       
        matryca[ ile ] = 2000;
       
        cout << matryca[ ile ] << "  matryca klasa" << ile << endl;
    }

Niestety wyskakuje mi komunikat:

D:\C++\mecz\main.cpp|66|error: expected unqualified-id before '.' token

Czy mozecie mi jeszcze raz pomóc? Dzieki za cierpliowść:)
P-139737
michal11
» 2015-11-07 12:21:05
Skoro p_napad_1 to wskaźnik to do jego składowych musisz się odwołać przez -> zamiast kropki.
P-139738
« 1 »
  Strona 1 z 1