C++ programiranje

Hardware, software, mobiteli, programiranje, internet...

Moderator: Bobi

User avatar
Static-X
Posts: 2379
Joined: 23/07/2009 14:50

C++ programiranje

Post by Static-X » 11/11/2009 22:33

Imal ko da je upoznat vise sa c++ programiranjem. Imam problem sa class types.
Ako ima ko da zna nek malo pojasni kako koristiti u class clanove druge class.
Da nebi beze opsirno o svom problemu prvo bi da vidim ako ima ko da zna nek se javi pa bi ona mogli diskutovati o problemu i eventualnoj pomoc, naravno ako to zelite.

Hvala unaprijed!


flamethrower
Posts: 122
Joined: 30/10/2009 22:36

Re: C++ programiranje

Post by flamethrower » 12/11/2009 17:45

Pitaj.

Ako pitas da li je moguce da atribut neke klase bude klasa, da moguce je, npr.

class A{
class B;
};

je validna konstrukcija.

Trebas znati da svaka klasa moze imati privatne i javne atribute.(postoje i "protected",ali je to sad nevazno!)
Po defaultu su ti svi atributi privatni, za razliku od stuktura gdje su svi po defaultu javni.
Zasto je ovo vazno?
Javnim atributima mozes pristupati iz svih dijelova programa i ne preporucava se njihovo koristenje, dok privatnim
mozes pristupiti samo u toj klasi, funkcijama clanicama i prijateljskim funkcijama.

Eto, ukratko.
Naravno, ne znam kakav si ti sa ovim znanjem pa cu sacekat da vidim sta te zanima pa, ako znam stagod, da
ti i pomognem.

User avatar
Static-X
Posts: 2379
Joined: 23/07/2009 14:50

Re: C++ programiranje

Post by Static-X » 12/11/2009 20:57

Hvala puno na odgovoru
Drago mi je da ima neko upoznat sa c++ na ovom forumu jer poceo sam guviti nadu.

Evo vako sad malo opsirnije u vezi mog problema. Nadam se da ces uspijeti razumjeti jer cu mozda mjesati engleske nazive.

Imam 7 razliciti files. jedan je .h koja sadrzi deklaraciju jedne class. Znaci sadrzi class igrac { sa svojim members}
Takodje imam .cpp file koja sadrzi tijelo (body) od svi ovi funkcija iz navedene class.

Isti slucaj je sa jos 2 files (.h i .cpp) koji sadrze drugu class igrac2.

Slijedeci file jeste .cpp file koji sadrizi int main funkciju.
Files dosad navedeni su dati za koristenje ali ih nesmijem promjeniti.

Moj zadatak je da u preostala 2 files (.h i .cpp) napravim jos jednu class igra funkciju koja ce sadrzati svoje privatne i public clanove.

E sad da nebi doslo do promjene u private clanovima moram koristiti public funkciju u toj class da bi koristio te clanove. Evo vako :

class Game {

int clan;
int clan2;
public:
void neka funkcija();
void neka funkcija();

int getClan() { return clan;}
int getClan2() {return clan2;}
}

Ovo isto moram da uradim sa class igrac i class igrac2. Treba i njig tj. njehove clanove da bi korstio moram ih zvati kroz Game class. Tu sam zapeo jer nisam siguran sta trebam da uradim. U ovom slucaj mora postojati funkcija igrac& getIgrac(); i ingrac2& getIgrac2(); u Game class.
Da bi radilo na ovaj nacin sta ddatno treba da uradim?

Nadam se da ces skontati sta pokusavam da uradim ako ne reci sta nije jasno da jos pojasnim

Hvala jos jednom na pomoci

User avatar
mousstapha
Posts: 3919
Joined: 14/07/2008 03:13
Location: Stuttgart

Re: C++ programiranje

Post by mousstapha » 12/11/2009 21:03

Ja sam pokusao da skontam gdje je problem, ali iz ovoga stvarno nisam mogao skonati sta ti ustvari treba. Probaj malo vise opisati te klase, kako se koriste, imali nasljedjivanja... :-)

User avatar
Static-X
Posts: 2379
Joined: 23/07/2009 14:50

Re: C++ programiranje

Post by Static-X » 12/11/2009 21:24

Nisam siguran sta znaci naslijedjivanje u ovom slucaju.

U sustini imam file koji sadrizi main funkciju koja koristi clanove i funkcije iz ovi classa.
Ali sto je najbitini te funkcije se koriste kroz Game class.

int main ()
{
Igrac igrac; // ovdje class Igrac object je deklariran

int wordSize = igrac.initial(); // ovdje je igrac class koristena samo za pristup

Game game (wordSize, "rijeci", igrac); // e ovdje postaje zapetljano, koristen je konstruktor koji ima igrac kao argument

bool gameFinished = false;

while (!gameFinished) {

char guess = game.getIgrac2().guessACharacter(); // ovdje guessACharacter je upotrebljeno kroz game class iako se //nalazi u igrac2 class



gameFinished = game.guesserHasWon() || game.guesserHasLost(); // funkcija u class game ovo je ok
}


game.getIgrac().providerHasLost(game.getWordSoFar()); // ovdje takodje koristi getIgrac funkciju da bi mogao koristiti //providerHasLost funkciju koja se nalazi u igrac classi
.
.
.

return 0;
}

Ovo je jedan dio samo da bi pokazo na sta mislim
Dali je sad imalo jasnije
Znaci treba mi naci na koji cu napraviti class Game da bi mogo koristiti clanove ostali classi preko ove class.

aldm
Posts: 188
Joined: 21/08/2008 22:17

Re: C++ programiranje

Post by aldm » 12/11/2009 21:45

Ne kontam te ni ja baš najbolje.
Ako se u klasi Game nalazi klasa igrac (što bi i bilo logično ako si zamislio da igra ima više igrača), onda staviš niz igrača 'igraci' u klasi' Game', i staviš
jednu integer varijablu 'broj_igraca'.
Kad praviš konstruktor stavljaš 'broj_igraca' na 0, a u klasi 'Game' imaš i metodu 'dodaIgrača(parametri)', čiji
su parametri svi parametri koji se nalaze u klasi igrač. Ovom metodom praviš novog igrača, dodaješ ga u niz igrača 'igraci' i uvećavaš za jedan
varijablu broj_igraca. Dakle, kod bi išao ovako:
class Game{
igrac igraci[];
broj_igraca;
...//ostali atribbuti i metode klase Game
};

Konstruktor ove klase bi imao sljedeci izgled:
Game::Game(int max_broj_igraca, ostali_parametri){
igraci=new Igrac[max_broj_igraca]; //pravis niz igraca, prvo treba znati koliko najvise moze biti igraca
broj_igraca=0;
...//ostatak koda za konstruktor
}

Kod metode dodajIgraca():

void Game::dodajIgraca(parametri_za_igraca){
Igrac igrac=new Igrac(parametri_za_igraca);
igraci[broj_igraca+1]=igrac;
broj_igraca++;
}

Sad, kad pristupaš nekom igracu iz igre, to radiš po nekom jedinstvenom identifikatoru (ja ću koristiti id). Kod klase getIgrac:
Igrac Game::getIgrac(int id){
Igrac igrac=new Igrac();//konstruktor bez parametara u klasi igrac postavlja atribute na neke default vrijednosti-nule ili sl
for(int i=0;i<broj_igraca;i++){
if(igraci[i].vratiID==id){//u petlji trazis igraca sa ID-em kojeg si unio kao argument
igrac=igraci[i];
break;
}
}
return igrac;
}

Nadam se da sam kolko-tolko pomogao :roll:

User avatar
Static-X
Posts: 2379
Joined: 23/07/2009 14:50

Re: C++ programiranje

Post by Static-X » 12/11/2009 22:05

Razumijem to sto si objasnio u veiz vise igraca.
U mom slucaju postoje samo dva igraca. Igra je Vjesanje - igrac postavi rijec a drugi pogadja slvo po slovo.
E sad postoji file (.h i .cpp) koja sadrzi class igrac1 koja sadrzi sve vezano za tog igraca. U ovom slucaju to ce biti kompijuter, sa svim funkcijama koje ce mu omoguciti da postavi slova i pokusa rijesiti rijec.
Drugi file ima class igrac2. U ovoj class takodje je sve vezano za igraca tj. osobu koji ce igrati igru.
Ja treba da modifujem file u kojem ima class Game koja sadrzi clanove vezane za igru uopcenito. Znaci moram ubaciti nekako clanove gore navedeni klass u Game class da bi ih mogao koristiti preko ove class.
I naravno zadnji file sadrzi main funkciju koja sadrzi listu i redoslijed funkcija da bi se igra odigrala.

flamethrower
Posts: 122
Joined: 30/10/2009 22:36

Re: C++ programiranje

Post by flamethrower » 12/11/2009 22:14

Static-X wrote: char guess = game.getIgrac2().guessACharacter(); // ovdje guessACharacter je upotrebljeno kroz game class iako se //nalazi u igrac2 class



Mislim da je ovo sustina.
Ti zelis da pristupas funkcijama clanicama klase koja je atribut neke druge klase, ako se ne varam?

Tvoj Game je nekako ovako:

class Game{
..

igrac2 atribut;
.
.

}

,a ova klasa igrac2 ima funkciju clanicu guessACharacter(

class igrac2{
.
.
public:
char guessACharacter();
}


Problem je jednostavno rijesiti.
Dodaj jos jednu funkciju u Game koja ce odraditi ovo sto radi guessACharacter() pa bi ti
Game izgledalo ovako:

class Game{
.
.
.
igrac2 atribut
public:
char nova(){return atribut.guessACharacter(); }
};

Sad ovo mozes pozivati iz main-a kao

char guess = game.nova();

Sta ce se ovdje desiti?
Funkcija clanica nova ce pozvati funkciju clanicu guessACharacter() nad atributom, vratit ce char, te ce ti nova vratiti
char.

Nadam se da je to to.

User avatar
Static-X
Posts: 2379
Joined: 23/07/2009 14:50

Re: C++ programiranje

Post by Static-X » 12/11/2009 22:30

flamethrower wrote:
Static-X wrote: char guess = game.getIgrac2().guessACharacter(); // ovdje guessACharacter je upotrebljeno kroz game class iako se //nalazi u igrac2 class



Mislim da je ovo sustina.
Ti zelis da pristupas funkcijama clanicama klase koja je atribut neke druge klase, ako se ne varam?

Tvoj Game je nekako ovako:

class Game{
..

igrac2 atribut;
.
.

}

,a ova klasa igrac2 ima funkciju clanicu guessACharacter(

class igrac2{
.
.
public:
char guessACharacter();
}


Problem je jednostavno rijesiti.
Dodaj jos jednu funkciju u Game koja ce odraditi ovo sto radi guessACharacter() pa bi ti
Game izgledalo ovako:

class Game{
.
.
.
igrac2 atribut
public:
char nova(){return atribut.guessACharacter(); }
};

Sad ovo mozes pozivati iz main-a kao

char guess = game.nova();

Sta ce se ovdje desiti?
Funkcija clanica nova ce pozvati funkciju clanicu guessACharacter() nad atributom, vratit ce char, te ce ti nova vratiti
char.

Nadam se da je to to.


Mislim da si poprilicno razumio u cemu je pointa.
Samo kako sto reko ja nesmijem mijenjati ostale files tj. file koja sadrzi main i files sto sadrze class za 2 razlicita igraca.
Ja mogu modificirati samo Game class da bi radila sa zadanim stvarima.

"Ti zelis da pristupas funkcijama clanicama klase koja je atribut neke druge klase, ako se ne varam?"
Da potpuno si upravu. Ali samo sto se to moram uraditi na nacin da bi radilo sa ostalim files.

Kao sto vidis
game.getIgrac2().guessACharacter(); je koristena u main funkciji i to mi govori da na osnovu getIgrac2(); funkcije pristup je omogucen funkciji iz igrac2. Takodje ovo nije jedina funkicja koja je upotrebljena ali sam samo navo dio.
Znaci u main funkciji koristeno je game.getIgrac2().*******() (***** () su funkcije iz igrac2)
i takodje za igrac 2 game.getigrac2().*******() (******() funkcije iz igrac2)

flamethrower
Posts: 122
Joined: 30/10/2009 22:36

Re: C++ programiranje

Post by flamethrower » 12/11/2009 22:43

Pa nista.
Ovako.

"game.getigrac2().*******()"


game.getigrac2() mora biti objekat tipa igrac2.

Znaci, getigrac2() vraca objekat ili referencu na objekat tipa igrac2 koji je u klasi Game.

igrac2& getigrac2(){return atribut;}

--------------------------------------------------------------------------------------------------------------

Nevezano za zadatak, je l' ti ovo neki zadatak neko dao na faksu?
Ovakav pristup nije u skladu sa C++.
Vidis, ti sa ovom funkcijom getigrac2() imas direktan pristup privatnom atributu.

User avatar
Static-X
Posts: 2379
Joined: 23/07/2009 14:50

Re: C++ programiranje

Post by Static-X » 12/11/2009 23:09

flamethrower wrote:Pa nista.
Ovako.

"game.getigrac2().*******()"


game.getigrac2() mora biti objekat tipa igrac2.

Znaci, getigrac2() vraca objekat ili referencu na objekat tipa igrac2 koji je u klasi Game.

igrac2& getigrac2(){return atribut;}

--------------------------------------------------------------------------------------------------------------

Nevezano za zadatak, je l' ti ovo neki zadatak neko dao na faksu?
Ovakav pristup nije u skladu sa C++.
Vidis, ti sa ovom funkcijom getigrac2() imas direktan pristup privatnom atributu.


Da na faksu.

Opet nisam siguran dali da pravim funkcije za svaki clan pomenuti klasa.
Pokusacu opet pa cu vidjeti kako ce ici.
Mozda nije u skladu sa c++ ali sta ako koristis &. Bili to promjenilo situaciju.

flamethrower
Posts: 122
Joined: 30/10/2009 22:36

Re: C++ programiranje

Post by flamethrower » 12/11/2009 23:29

Ako ne koristis &,onda ce ti funkcija
getIgrac2() vratiti kopiju atributa tipa Igrac2 i radit ces sa kopijom.

Static-X wrote:Opet nisam siguran dali da pravim funkcije za svaki clan pomenuti klasa



Ako ti je receno da ne mozes mijenjati main, ne preostaje ti nista drugo nego da napravis ovu funkciju
getIgrac2() jer ti se ona poziva iz maina.


Na kojem je ovo faksu, ako nije tajna?

User avatar
Static-X
Posts: 2379
Joined: 23/07/2009 14:50

Re: C++ programiranje

Post by Static-X » 12/11/2009 23:51

flamethrower wrote:Ako ne koristis &,onda ce ti funkcija
getIgrac2() vratiti kopiju atributa tipa Igrac2 i radit ces sa kopijom.

Static-X wrote:Opet nisam siguran dali da pravim funkcije za svaki clan pomenuti klasa



Ako ti je receno da ne mozes mijenjati main, ne preostaje ti nista drugo nego da napravis ovu funkciju
getIgrac2() jer ti se ona poziva iz maina.


Na kojem je ovo faksu, ako nije tajna?


Ok ako mislis da je ovo jedini naci znaci moja class Game bi trbala da lici na vako nesto?

class Game{

private:

type private members;...

public:
Igrac1 igrac1; // negdje u ovoj class moram napraviti igrac1 i igrac2 objekte ?
Igrac2 igrac2; // kako to uraditi - na ovaj naci sto sam prikazao neradi - incomplete type

type public members;
type getPrivateMember() { return privateMember}...

Igrac1& getIgrac1() { return ?} // naveo si nesto slicno ovako, ako je ovo tacno sta treba staviti umejsto ? dali mislis na nekog clana Igrac1?

Igrac2& getIgrac2() { return ?} // isto tako za igrac2
};

Ma nema sta nisam pokusavo ba, vise zivce sam pogubio!
.....................
Radford University

flamethrower
Posts: 122
Joined: 30/10/2009 22:36

Re: C++ programiranje

Post by flamethrower » 12/11/2009 23:56

class Game{
Igrac1 igrac1; //oni mogu i trebaju biti privatni
Igrac2 igrac2;

public:

Igrac1& getIgrac1() { return igrac1;}
Igrac2& getIgrac2() { return igrac2;}
};

Probaj da li ti ovo radi.
Nemoj zaboraviti ukljuciti na vrhu headere gdje su ti definisani Igrac1 i Igrac2.

User avatar
Static-X
Posts: 2379
Joined: 23/07/2009 14:50

Re: C++ programiranje

Post by Static-X » 13/11/2009 00:19

flamethrower wrote:class Game{
Igrac1 igrac1; //oni mogu i trebaju biti privatni
Igrac2 igrac2;

public:

Igrac1& getIgrac1() { return igrac1;}
Igrac2& getIgrac2() { return igrac2;}
};

Probaj da li ti ovo radi.
Nemoj zaboraviti ukljuciti na vrhu headere gdje su ti definisani Igrac1 i Igrac2.


Vidis ja sam imo u glavi i te varijante i porbo sam ih prije ali nisu uspijevale zbog toga sto sam stavljo
class Provider; class Guesser u ovome file umjesto samo da include .h files od ovi klasa.
Ovo mozda i uspije samo imam sad mali problem sa constructorom.
Nemoj nigjde ici :D
Evo vako u main funkciji poziva se na ovo
Game game (wordSize, "rijeci", igrac1);
Znaci konstuktor ali nekontam sta ce mi argument igrac1 (sto je class)
Sa ovim daje mi error koji se nalazi u body od tog konstruktora.

User avatar
frfi.
Posts: 406
Joined: 05/04/2009 14:56

Re: C++ programiranje

Post by frfi. » 13/11/2009 00:25

jel to ispit iz RPR-a sutra :-D

User avatar
Static-X
Posts: 2379
Joined: 23/07/2009 14:50

Re: C++ programiranje

Post by Static-X » 13/11/2009 00:31

frfi. wrote:jel to ispit iz RPR-a sutra :-D


hehe ma jok problem koji me proganja dvijetri sedmice
Ulozio sam toliko napora i jos ga nisam rijesio

RPR? nasta mislis

User avatar
frfi.
Posts: 406
Joined: 05/04/2009 14:56

Re: C++ programiranje

Post by frfi. » 13/11/2009 00:46

etf.... :-D
(RPR=razvoj programskih rjesenja)

flamethrower
Posts: 122
Joined: 30/10/2009 22:36

Re: C++ programiranje

Post by flamethrower » 13/11/2009 08:29

Static-X wrote:Evo vako u main funkciji poziva se na ovo
Game game (wordSize, "rijeci", igrac1);
Znaci konstuktor ali nekontam sta ce mi argument igrac1 (sto je class)
Sa ovim daje mi error koji se nalazi u body od tog konstruktora.


Pa logicno je ako ti klasa Game ima atribut tipa Igrac1 da, prilikom definisanja objekta tipa
Game, trebas dodijeliti vrijednost tom atributu.

Znaci trebao bi postojati konstruktor tipa

Game(int,const char[],const Igrac1&)

ili nesto slicno.

Sad greska unutar istog moze biti iz razlicitih razloga.

User avatar
Static-X
Posts: 2379
Joined: 23/07/2009 14:50

Re: C++ programiranje

Post by Static-X » 13/11/2009 15:12

flamethrower wrote:
Static-X wrote:Evo vako u main funkciji poziva se na ovo
Game game (wordSize, "rijeci", igrac1);
Znaci konstuktor ali nekontam sta ce mi argument igrac1 (sto je class)
Sa ovim daje mi error koji se nalazi u body od tog konstruktora.


Pa logicno je ako ti klasa Game ima atribut tipa Igrac1 da, prilikom definisanja objekta tipa
Game, trebas dodijeliti vrijednost tom atributu.

Znaci trebao bi postojati konstruktor tipa

Game(int,const char[],const Igrac1&)

ili nesto slicno.

Sad greska unutar istog moze biti iz razlicitih razloga.


Da imam konstruktor Game(int, const char*, Igrac1&)
a pokazuje mi error: no maching function for call to Igrac2::Igrac2()

Po svim prilikama treba mi nesto vezano za Igrac2 takodje, kako sto ti rece trbam dodjeliti vrijednost Igracu2 i mislim da bi to trebo uraditi koristenjem Igrac2 konstruktora u Game konstruktoru.
Igrac2 konstruktor je Igrac2(int, const char*);
Pokuso sam sa

Igrac2 Igrac2(argument, argument );
Igrac2& igrac2(argum, argume);
Igrac2& igrac2();

nije uspjelo

flamethrower
Posts: 122
Joined: 30/10/2009 22:36

Re: C++ programiranje

Post by flamethrower » 13/11/2009 19:03

E, haj da vise rijesimo to.
Ovo je pravo zanimljivo, nisam se odavno bavio ovako necim oko C++, a i zanimljivo je da vam na faksu
daju probleme, tako da morate analizirati kod i dodavati neke module i prepravljat isti jer ces rijetko
u buducnosti imati priliku da pises programe od nule.Nejcesce te ubace u tim pa se ti snalazi.


Vratimo se problemu.

Imamo ovo:

Game(int, const char*, Igrac1&)

Ako se ne varam ovo ti pokazuje "no maching function for call to Igrac2::Igrac2()" zato sto on
pokusava inicijalizirati onaj tvoj argument igrac2 tipa Igrac2 u klasi Game sa konstruktorom bez
parametara, a kao sto si rekao, takav ne postoji.

Postoji ovo:

Igrac2(int, const char*);


E, haj ti sad fino probaj napisati konstruktor Game ovako:

Game(int, const char[],const Igrac1&):igrac2(Igrac2(argument,argument))
{
.
.
}


Nadam se da je ovo ili si i ovo pokusavao?
Naravno u KIL-u mozes inicijalizirati i ostale atribute.

Samo bih ti savjetovao da malo pazis oko ovih naziva.
Malo je zbunjujuce.

User avatar
Static-X
Posts: 2379
Joined: 23/07/2009 14:50

Re: C++ programiranje

Post by Static-X » 13/11/2009 20:19

Jedno pitanje i zatebe, cime se ti bavis pa si upoznat sa ovim ako nije tajna.
............................

Game(int, const char[],const Igrac1&):igrac2(Igrac2(argument,argument))

Ovo mi nije jasno nikako, al ipak sam probao, bez uspijeha.
Evo vako ako mognem objasniti sad uvezi ovi construktora.
Prvo da naglasim ovo gore sto smo uradili uvezi klasa mislim da je uredu.
Evo vako main funkcija pocinje sa Igrac2 igrac2; objekat deklaracijom. Ovo je uradjeno samo da bi se pozvala jedna funkcija direktno iz Igrac2 klase. Funkcija je u vezi koliko treba da dude duga rijec za pogadjanje, naravno funkcija vraca int.
Poslije toga slijedi Game konstruktor:

Igrac2 igrac2;
int wordSize = igrac2.initialPrompt();
Game game (wordSize, "rijeci", igrac2);

Znaci ovo je pocetni dio main funkcije. E sad gledajuci u ovaj poziv za Game konstruktor ja moram napraviti konstruktor u klasi game da vi radio s ovim pozivom. Kako sto reko ja samo smijem mjenjati stvari u game klasi da bi radile sa ostalim files. Normala Debuger koji korstim pokazuje mi da se ovo ondnosi na Game::Game(int, const cha*, Provider&).
Igrac1 klasa ima svoj konstruktor i sastoji se od Igrac1(int, const char*);
E pazi sad ovo, mozda nam ovo moze pomoci, nisam spomenuo do sad. Ovaj program smo radili bez klasa i radi bez greske. Zadatak je bio posto je bila rijec o klasam da iskoristimo "prednosti" klasa i upotrebimo ih u ovom programu, tj. grupiso je funkcije u klase. Prof. je izmijenio vecinu koda u pomenutim files i ostavio je ovaj dio na nama da dovrsimo. Gledajuci u stari kode mogu zakljuciti da je ovaj konstruktor Game zamjenio gameSetUp i Igrac1SetUp funkcije. Igrac1SetUp funkcija sa 2 argumenta je promjenjen u Igrac1 konstrutor sa 2 argumena kao sto sam gore naveo. GameSetUp ima samo jedan argument int, ali vidim da je to Prof. izmijenio, napravio je od gameSetUp konstruktor koji ima 3 argumenta i po svim prilikama je sastavio game i Igrac1 konstruktore zajedno. Ovo kazem zbog toga sto u starom kodu umjesto Game game konstrukotra gore navedenog u main funkciji bile su koristene funkcije gameSetup(int); i Igrac1SetUp(int, const char*);
Takodje moze se vidjeti da Game konstrukotr ima const char* argument koji sigurno ima veze sa igrac1 konstruktorom smosto mi nije jasno sta ce tu Igrac2& argument.


adam se da sam dobro objasnio

flamethrower
Posts: 122
Joined: 30/10/2009 22:36

Re: C++ programiranje

Post by flamethrower » 13/11/2009 21:28

Ma i ja sam jos student.
Ovo ja malo sa tobom iz razbibrige, mada bi morao uciti za nakav ispit, al' mi mrsko plaho.
---------------

Nego, dogovorili smo se da Game ima privatne atribute igrac1 i igrac2.
Je l' da?


Static-X wrote:Igrac2 igrac2;
int wordSize = igrac2.initialPrompt();
Game game (wordSize, "rijeci", igrac2);


Game konstruktor ima tri argumenta.OK.
Kako sam ja skontao, ova prva dva cemo iskoristiti za inicijalizaciju atributa igrac1, a ovaj treci za
inicijalizaciju igrac2.
Je l' da?

Game(int broj, const char* a, const Igrac2& nesta): igrac1(Igrac1(broj,a)), igrac2(nesta){...}

Sta smo uradili?
Atribut igrac1 tipa Igrac1 smo inicijalizirali, tako sto smo pozvali konstruktor Igrac1(broj,a).
Ovaj konstruktor vraca privremeni objekat tipa Igrac1 koji se dodjeljuje nasem atributu igrac1.
To bi trebalo biti u dure.
Sada jos treba inicijalizirati atribut igrac2 tipa Igrac2.
Posto smo proslijedili atribut tipa igrac2, samo ga proslijedimo u KIL gdje inicijaliziramo nas
atribut igrac2 sa, u ovom slucaju konkretno, "nesta".

Dobar si ti. 2-3 hefte ovo radis.
Ja bih do sad slupao i racunar i pola kucnog inventara.

User avatar
Static-X
Posts: 2379
Joined: 23/07/2009 14:50

Re: C++ programiranje

Post by Static-X » 13/11/2009 21:59

flamethrower wrote:Ma i ja sam jos student.
Ovo ja malo sa tobom iz razbibrige, mada bi morao uciti za nakav ispit, al' mi mrsko plaho.
---------------

Nego, dogovorili smo se da Game ima privatne atribute igrac1 i igrac2.
Je l' da?


Static-X wrote:Igrac2 igrac2;
int wordSize = igrac2.initialPrompt();
Game game (wordSize, "rijeci", igrac2);


Game konstruktor ima tri argumenta.OK.
Kako sam ja skontao, ova prva dva cemo iskoristiti za inicijalizaciju atributa igrac1, a ovaj treci za
inicijalizaciju igrac2.
Je l' da?

Game(int broj, const char* a, const Igrac2& nesta): igrac1(Igrac1(broj,a)), igrac2(nesta){...}

Sta smo uradili?
Atribut igrac1 tipa Igrac1 smo inicijalizirali, tako sto smo pozvali konstruktor Igrac1(broj,a).
Ovaj konstruktor vraca privremeni objekat tipa Igrac1 koji se dodjeljuje nasem atributu igrac1.
To bi trebalo biti u dure.
Sada jos treba inicijalizirati atribut igrac2 tipa Igrac2.
Posto smo proslijedili atribut tipa igrac2, samo ga proslijedimo u KIL gdje inicijaliziramo nas
atribut igrac2 sa, u ovom slucaju konkretno, "nesta".

Dobar si ti. 2-3 hefte ovo radis.
Ja bih do sad slupao i racunar i pola kucnog inventara.


Jarane da si gdje blizu castio bi te!!!!!!!!!!!

Konacno sam zavrsio i evo ga radi ko zmaj

Evo sta sam dodo na body od konstruktora Game
Game::Game(atributs)

:Igrac2(atribut, atribut)
{...}

Hvala ti mnogo uz tvoju pomoc uspio sam konacno. Vjeruj evo ovo je treva sedmica koliko dugo sam se zafrkavo sa ovim sranjem, naravno nisam sad prve o cijele dane na ovome nego ono spomalo kad se nadje vremena la ocito nije islo . I kao sto rece razbio bi i komp i sve dolazilo je i do toga ali sam imo snage da prevazidjem sve to jer sm zno da je nesto prosto al samo trebe naletiti na tacnu stvar.
Hvala jos jednom
Duznik sam ti

flamethrower
Posts: 122
Joined: 30/10/2009 22:36

Re: C++ programiranje

Post by flamethrower » 13/11/2009 22:05

Haj, fino.

Sto je nama profa rekao na faksu da je on svoj prvi program pisao par dana i to bio potpuno banalan program.
Najvaznije je nesto nauciti iz svega toga, a ja najbolje naucim ono oko cega se bas namucim.
Tako sam naucio da je konstruktor kopije konstruktor i da ima KIL jer me covjek opalio na ispitu zbog toga.

Haj, zivio!

Post Reply