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

Pobieranie obiektów do funkcji

Ostatnio zmodyfikowano 2013-12-27 11:52
Autor Wiadomość
GarryMoveOut
Temat założony przez niniejszego użytkownika
Pobieranie obiektów do funkcji
» 2013-12-26 19:01:13
Chcę pobrać obiekty do funkcji ale nie do funkcji klasy tylko do zwykłej funkcji. Napisałem takie coś, działa ale nie tak jak chcę. Ponieważ mam tylko dostęp do parametrów które są w klasie baza a nie mam dostępu do parametrów klasy gracze. Jak zamienię rodzaj parametrów pobieranych przez funkcje "void przeciwnik(gracz atakujacy, gracz obronca)" to VS mi sypie że:
no suitable user-defined conversion from "baza" to "gracze" exists. Jak wyjść z tego problemu ? Myślałem też nad stworzeniem metody w klasie gracze i tam umieścić walke ale potem nie wiem jak taką funkcję wywołać w mainie.

C/C++
...

void walka( baza atakujacy, baza obronca )
{
    cout << atakujacy.opis << " vs " << obronca.opis << endl;
}

int main()
{
    int krok = 0;
    gracze czlowiek( 100, "czlowiek", 10, "Bron sie!" );
   
    //przeciwnicy @1 zycie @2 opis @3 atak @4 okrzyk
    gracze troll( 20, "Troll", 5, "Oghh" );
    gracze ogr( 15, "Ogr", 6, "Arggh" );
    gracze elf( 17, "Elf", 3, "Ooo" );
    gracze mag( 30, "Magik", 10, "Abra kadabra" );
    gracze rycerz( 50, "Rycerz", 15, "Wio" );
   
    //przeszkody @1 zycie @2 opis @3 opor @4 wielkosc
    przeszkody kamien( 5, "kamyczek", 1, 1 );
    przeszkody drzewo( 20, "drzewo", 2, 10 );
    przeszkody skala( 25, "skala", 5, 20 );
    przeszkody krzaki( 10, "krzaki", 1, 30 );
    przeszkody gora( 1000, "gora", 20, 100 );
   
    baza * lista[ 10 ] = { & troll, & kamien, & ogr, & drzewo, & elf, & skala, & mag, & krzaki, & rycerz, & gora };
   
    for( int i = 0; i < 10; i++ )
         walka( czlowiek,( * lista[ i ] ) );
   
    system( "Pause" );
    return 0;
   
}
P-100207
pekfos
» 2013-12-26 19:10:43
Rzutuj w dół, do gracze. A najlepiej użyj metody wirtualnej.
P-100210
GarryMoveOut
Temat założony przez niniejszego użytkownika
» 2013-12-26 21:31:48
Chciałem użyć metody wirtualnej. Zrobiłem tak jak tu http://cpp0x.pl/kursy​/Programowanie-obiektowe-C++​/Polimorfizm/Metody-wirtualne​/495 :
C/C++
//source cpp
...
baza * bptr = & czlowiek, & troll;
bptr->walka();
...
Ale nie wiem jak przesłać dwa obiekty.
P-100246
pekfos
» 2013-12-26 21:56:26
Drugi jako argument..?
P-100252
GarryMoveOut
Temat założony przez niniejszego użytkownika
» 2013-12-27 11:52:01
Źle zrozumiałem funkcje wirtualne już wszystko zrobiłem, dzięki :)

EDIT:
Ale napotkałem inny problem, jeśli bym chciał żeby funkcja zwracała jakieś wartości ? Co w tedy ?
P-100287
« 1 »
  Strona 1 z 1