Search
 
 
  Engleski
 
 
 
Open in this window (click to change)
Forum@DeGiorgi: Početna
Forum za podršku nastavi na PMF-MO
Login Registracija FAQ Smajlići Članstvo Pretražnik Forum@DeGiorgi: Početna

U koju datoteku idu konstruktori?
WWW:

Moja sarma
 
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 2. godine -> Računarski praktikum 1
Prethodna tema :: Sljedeća tema  
Autor/ica Poruka
delete
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 25. 03. 2007. (11:36:21)
Postovi: (3)16
Sarma = la pohva - posuda
= 0 - 0

PostPostano: 11:38 ned, 25. 3. 2007    Naslov: U koju datoteku idu konstruktori? Citirajte i odgovorite

Imam par pitanja jer mi neke stvari nisu bile baš najjasnije..nisam mogao doći na konzultacije pa ako mi možete pomoći...Npr.kamo trebam staviti konstruktore u .c ili .h ? I čemu služi .h samo za deklaraciju strukture ili što točno?
Imam par pitanja jer mi neke stvari nisu bile baš najjasnije..nisam mogao doći na konzultacije pa ako mi možete pomoći...Npr.kamo trebam staviti konstruktore u .c ili .h ? I čemu služi .h samo za deklaraciju strukture ili što točno?


[Vrh]
Korisnički profil Pošaljite privatnu poruku
pecina
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 19. 01. 2005. (14:15:23)
Postovi: (157)16
Spol: kućni ljubimac
Sarma = la pohva - posuda
62 = 85 - 23
Lokacija: Happily traveling through space since 1986!

PostPostano: 11:46 ned, 25. 3. 2007    Naslov: Citirajte i odgovorite

Da, u .h datoteci se nalaze prototipovi funkcija i deklaracije, a u cpp se nalazi definicija. Npr.
[code:1]// Tocka.h
struct tocka
{
float x, y;

// Deklaracija konstruktora
Tocka(float x, float y);
}[/code:1]
[code:1]// Tocka.cpp
#include "Tocka.h"

// Definicija konstruktora
Tocka::Tocka(float x, float y)
: x(x), y(y)
{}[/code:1]

Jasnije??
Da, u .h datoteci se nalaze prototipovi funkcija i deklaracije, a u cpp se nalazi definicija. Npr.
Kod:
// Tocka.h
struct tocka
  {
  float x, y;

  // Deklaracija konstruktora
  Tocka(float x, float y);
  }

Kod:
// Tocka.cpp
#include "Tocka.h"

// Definicija konstruktora
Tocka::Tocka(float x, float y)
  : x(x), y(y)
{}


Jasnije??



_________________
-- space available for rent --
[Vrh]
Korisnički profil Pošaljite privatnu poruku
vinko
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 26. 08. 2006. (23:08:00)
Postovi: (1A8)16
Spol: muško
Sarma = la pohva - posuda
69 = 87 - 18
Lokacija: PMF-MO 214

PostPostano: 13:47 ned, 25. 3. 2007    Naslov: Citirajte i odgovorite

[quote="pecina"]Da, u .h datoteci se nalaze prototipovi funkcija i deklaracije, a u cpp se nalazi definicija. Npr.
[code:1]// Tocka.h
struct tocka
{
float x, y;

// Deklaracija konstruktora
Tocka(float x, float y);
}[/code:1]
[code:1]// Tocka.cpp
#include "Tocka.h"

// Definicija konstruktora
Tocka::Tocka(float x, float y)
: x(x), y(y)
{}[/code:1]

Jasnije??[/quote]

Upravo tako. U ovom kontekstu, kompajler tretira konstruktor kao i svaku drugu funkciju.

Možda da ne kompliciramo sa : u implementaciji (to je dakle jedan od konstruktora tipa float), mogli bi pisati:

[code:1]// Tocka.cpp
#include "Tocka.h"

// Definicija konstruktora
Tocka::Tocka(float x, float y){
Tocka::x = x; // ili this->x = x;
Tocka::y = y; // ili this->y = y;
}[/code:1]
pecina (napisa):
Da, u .h datoteci se nalaze prototipovi funkcija i deklaracije, a u cpp se nalazi definicija. Npr.
Kod:
// Tocka.h
struct tocka
  {
  float x, y;

  // Deklaracija konstruktora
  Tocka(float x, float y);
  }

Kod:
// Tocka.cpp
#include "Tocka.h"

// Definicija konstruktora
Tocka::Tocka(float x, float y)
  : x(x), y(y)
{}


Jasnije??


Upravo tako. U ovom kontekstu, kompajler tretira konstruktor kao i svaku drugu funkciju.

Možda da ne kompliciramo sa : u implementaciji (to je dakle jedan od konstruktora tipa float), mogli bi pisati:

Kod:
// Tocka.cpp
#include "Tocka.h"

// Definicija konstruktora
Tocka::Tocka(float x, float y){
    Tocka::x = x;    // ili this->x = x;
    Tocka::y = y;    // ili this->y = y;
}


[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
marijap
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 21. 06. 2006. (19:04:40)
Postovi: (209)16
Spol: žensko
Sarma = la pohva - posuda
33 = 49 - 16
Lokacija: zg

PostPostano: 13:50 ned, 25. 3. 2007    Naslov: Citirajte i odgovorite

pitanje:
recimo da imam neku strukturu X i fje f,g,h.
mogu li npr. u implementaciji f-je g pozvati fju f sa X.f() negdje unutar g?
recimo da mi baš treba u g neka vrijednost vezana uz X koju izračunava upravo fja f...
pitanje:
recimo da imam neku strukturu X i fje f,g,h.
mogu li npr. u implementaciji f-je g pozvati fju f sa X.f() negdje unutar g?
recimo da mi baš treba u g neka vrijednost vezana uz X koju izračunava upravo fja f...


[Vrh]
Korisnički profil Pošaljite privatnu poruku
pecina
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 19. 01. 2005. (14:15:23)
Postovi: (157)16
Spol: kućni ljubimac
Sarma = la pohva - posuda
62 = 85 - 23
Lokacija: Happily traveling through space since 1986!

PostPostano: 13:57 ned, 25. 3. 2007    Naslov: Citirajte i odgovorite

Misliš ovako[code:1]struct X
{
void f();
void g();
};[/code:1]

Pa sad možeš pisato ovako[code:1]// .cpp, implementacija

void X::f()
{
// ...
}

void X::g()
{
f();
// a ekvivalentno je i
X::f();
}[/code:1]
Misliš ovako
Kod:
struct X
  {
    void f();
    void g();
  };


Pa sad možeš pisato ovako
Kod:
// .cpp, implementacija

void X::f()
 {
    // ...
 }

void X::g()
  {
    f();
    // a ekvivalentno je i
    X::f();
  }



_________________
-- space available for rent --
[Vrh]
Korisnički profil Pošaljite privatnu poruku
vinko
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 26. 08. 2006. (23:08:00)
Postovi: (1A8)16
Spol: muško
Sarma = la pohva - posuda
69 = 87 - 18
Lokacija: PMF-MO 214

PostPostano: 14:02 ned, 25. 3. 2007    Naslov: Citirajte i odgovorite

[quote="marijap"]pitanje:
recimo da imam neku strukturu X i fje f,g,h.
mogu li npr. u implementaciji f-je g pozvati fju f sa X.f() negdje unutar g?
recimo da mi baš treba u g neka vrijednost vezana uz X koju izračunava upravo fja f...[/quote]

Da.

npr. ovo sasvim uredno radi:
[code:1]
// dakle imam strukturu X sa funkcijama f(), g() i h(X y)

void X::f() {
// radi nesto
}

void X::g() {
f(); // znači X::f(); ili this->f();
}

void X::h(X y) {
f(); // pozivamo funkciju na strukturu(varijablu) na kojoj trenutno radimo
y.f(); // a normalo, možemo pozivati i funkcije neke druge varijable
}

// nedgje u npr. int main() imamo
...
X a,b;
a.g() // u implementaciji će biti pozvano a.f();
b.g() // u implementaciji će biti pozvano b.f();

a.h(b) // u implementaciji će biti pozvano a.f(), pa b.f();
b.h(b) // u implementaciji će biti pozvano b.f(), pa ponovo b.f();

...
[/code:1]
marijap (napisa):
pitanje:
recimo da imam neku strukturu X i fje f,g,h.
mogu li npr. u implementaciji f-je g pozvati fju f sa X.f() negdje unutar g?
recimo da mi baš treba u g neka vrijednost vezana uz X koju izračunava upravo fja f...


Da.

npr. ovo sasvim uredno radi:
Kod:

// dakle imam strukturu X sa funkcijama f(), g() i h(X y)

void X::f() {
   // radi nesto
}

void X::g() {
  f();  // znači X::f();  ili  this->f();
}

void X::h(X y) {
    f();  // pozivamo funkciju na strukturu(varijablu) na kojoj trenutno radimo
    y.f();  // a normalo, možemo pozivati i funkcije neke druge varijable
}

// nedgje u npr. int main() imamo
...
    X a,b;
    a.g()      // u implementaciji će biti pozvano a.f();
    b.g()      // u implementaciji će biti pozvano b.f();

    a.h(b)      // u implementaciji će biti pozvano a.f(), pa b.f();
    b.h(b)      // u implementaciji će biti pozvano b.f(), pa ponovo b.f();

...




Zadnja promjena: vinko; 14:09 ned, 25. 3. 2007; ukupno mijenjano 1 put.
[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
marijap
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 21. 06. 2006. (19:04:40)
Postovi: (209)16
Spol: žensko
Sarma = la pohva - posuda
33 = 49 - 16
Lokacija: zg

PostPostano: 14:09 ned, 25. 3. 2007    Naslov: Citirajte i odgovorite

skužila sam i po ovom prvom odgovoru...hvala
skužila sam i po ovom prvom odgovoru...hvala


[Vrh]
Korisnički profil Pošaljite privatnu poruku
vinko
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 26. 08. 2006. (23:08:00)
Postovi: (1A8)16
Spol: muško
Sarma = la pohva - posuda
69 = 87 - 18
Lokacija: PMF-MO 214

PostPostano: 14:12 ned, 25. 3. 2007    Naslov: Citirajte i odgovorite

[quote="marijap"]skužila sam i po ovom prvom odgovoru...hvala[/quote]

A pecina me pretekao. Nisam skuzio da je vec odgovorio.
marijap (napisa):
skužila sam i po ovom prvom odgovoru...hvala


A pecina me pretekao. Nisam skuzio da je vec odgovorio.


[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
marijap
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 21. 06. 2006. (19:04:40)
Postovi: (209)16
Spol: žensko
Sarma = la pohva - posuda
33 = 49 - 16
Lokacija: zg

PostPostano: 17:46 sri, 18. 4. 2007    Naslov: Citirajte i odgovorite

imam slično pitanje...

u datoteka.h ide deklaracija (ne prototip?) neke fje, a
u datoteka .cpp ide njena implementacija s tim da uključim "datoteka.h", jel tako?

je li dovoljno onda u datoteka.h staviti
povratni_tip fja (tip_arg1, tip_arg2, ...);

i može li povratni_tip biti vector<neki_tip> ?

javlja mi grešku kod linkanja pa pokušavam vidjeti gdje je greška...
imam slično pitanje...

u datoteka.h ide deklaracija (ne prototip?) neke fje, a
u datoteka .cpp ide njena implementacija s tim da uključim "datoteka.h", jel tako?

je li dovoljno onda u datoteka.h staviti
povratni_tip fja (tip_arg1, tip_arg2, ...);

i može li povratni_tip biti vector<neki_tip> ?

javlja mi grešku kod linkanja pa pokušavam vidjeti gdje je greška...


[Vrh]
Korisnički profil Pošaljite privatnu poruku
pecina
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 19. 01. 2005. (14:15:23)
Postovi: (157)16
Spol: kućni ljubimac
Sarma = la pohva - posuda
62 = 85 - 23
Lokacija: Happily traveling through space since 1986!

PostPostano: 18:06 sri, 18. 4. 2007    Naslov: Citirajte i odgovorite

Ako je greška kod linkanja moguče su dvije greške:
1. nisi dobro napravila projekt
2. deklaracija ti se ne podudara sa definicijom
Ako je greška kod linkanja moguče su dvije greške:
1. nisi dobro napravila projekt
2. deklaracija ti se ne podudara sa definicijom



_________________
-- space available for rent --
[Vrh]
Korisnički profil Pošaljite privatnu poruku
marijap
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 21. 06. 2006. (19:04:40)
Postovi: (209)16
Spol: žensko
Sarma = la pohva - posuda
33 = 49 - 16
Lokacija: zg

PostPostano: 18:27 sri, 18. 4. 2007    Naslov: Citirajte i odgovorite

tipovi se poklapaju, nego uopće ne znam jer smijem koristiti vector sam po sebi kao tip u deklaraciji kad je on generička struktura...jel treba paziti na nešto ili dodati kod deklaracije fje u .h?
tipovi se poklapaju, nego uopće ne znam jer smijem koristiti vector sam po sebi kao tip u deklaraciji kad je on generička struktura...jel treba paziti na nešto ili dodati kod deklaracije fje u .h?




Zadnja promjena: marijap; 18:29 sri, 18. 4. 2007; ukupno mijenjano 1 put.
[Vrh]
Korisnički profil Pošaljite privatnu poruku
pecina
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 19. 01. 2005. (14:15:23)
Postovi: (157)16
Spol: kućni ljubimac
Sarma = la pohva - posuda
62 = 85 - 23
Lokacija: Happily traveling through space since 1986!

PostPostano: 18:34 sri, 18. 4. 2007    Naslov: Citirajte i odgovorite

Možeš imati[code:1]vector<int> fja(set<float>);[/code:1] u .h datoteci ali onda moraš osigurati da ti u cpp datotekama MORA biti PRIJE #include "datoteka.h"
[code:1]#include <vector>
#include <set>
using namespace std;[/code:1]

To možeš zaobiči tako da u samoj .h datoteci ubaciš ovaj gornji kod. Onda bi sve trebalo štimati.
Možeš imati
Kod:
vector<int> fja(set<float>);
u .h datoteci ali onda moraš osigurati da ti u cpp datotekama MORA biti PRIJE #include "datoteka.h"
Kod:
#include <vector>
#include <set>
using namespace std;


To možeš zaobiči tako da u samoj .h datoteci ubaciš ovaj gornji kod. Onda bi sve trebalo štimati.



_________________
-- space available for rent --
[Vrh]
Korisnički profil Pošaljite privatnu poruku
marijap
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 21. 06. 2006. (19:04:40)
Postovi: (209)16
Spol: žensko
Sarma = la pohva - posuda
33 = 49 - 16
Lokacija: zg

PostPostano: 19:35 sri, 18. 4. 2007    Naslov: Citirajte i odgovorite

fala, karma++ 8)
ja sam čak stavila #include-ove ispred #include ".h" , ali se nisam sjetila staviti i using namespace std, a upravo radi tog mi nije prolazilo...

mogu li ja, za svaki slučaj, ubuduće sve #include ".h" stavljati tik prije int main-a ili implementacija fja?

inače, oduševljena sam kakvih sve ima gotovih fja u stl-ovima, vrlo praktično :D
fala, karma++ Cool
ja sam čak stavila #include-ove ispred #include ".h" , ali se nisam sjetila staviti i using namespace std, a upravo radi tog mi nije prolazilo...

mogu li ja, za svaki slučaj, ubuduće sve #include ".h" stavljati tik prije int main-a ili implementacija fja?

inače, oduševljena sam kakvih sve ima gotovih fja u stl-ovima, vrlo praktično Very Happy


[Vrh]
Korisnički profil Pošaljite privatnu poruku
vinko
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 26. 08. 2006. (23:08:00)
Postovi: (1A8)16
Spol: muško
Sarma = la pohva - posuda
69 = 87 - 18
Lokacija: PMF-MO 214

PostPostano: 19:46 sri, 18. 4. 2007    Naslov: Citirajte i odgovorite

[quote="marijap"]mogu li ja, za svaki slučaj, ubuduće sve #include ".h" stavljati tik prije int main-a ili implementacija fja?

inače, oduševljena sam kakvih sve ima gotovih fja u stl-ovima, vrlo praktično :D[/quote]

A možete gdje hoćete, ali bi preglednije bilo na početku.

U vezi onog prošlog posta, nekako ljepše bi bilo u .h datoteku napisati
#include <vector> i <set> (da ne morate svaki put kada includate taj .h fajl paziti u .cpp fajlu na išta), ali bez using namespace (jer mi to onda ostaje i u ostatku .cpp datoteke, što možda ne bih htio neki drugi put ako includam taj fajl - ako slučajno imam funkciju koja se jednako zove kao i ona iz std-a - npr. situacija sa swap je bila slična na vježbama).

Ja bi da pišem program .h fajl napisao:

[code:1]#include <vector>
#include <set>

std::vector<int> fja(std::set<float>);[/code:1]
marijap (napisa):
mogu li ja, za svaki slučaj, ubuduće sve #include ".h" stavljati tik prije int main-a ili implementacija fja?

inače, oduševljena sam kakvih sve ima gotovih fja u stl-ovima, vrlo praktično Very Happy


A možete gdje hoćete, ali bi preglednije bilo na početku.

U vezi onog prošlog posta, nekako ljepše bi bilo u .h datoteku napisati
#include <vector> i <set> (da ne morate svaki put kada includate taj .h fajl paziti u .cpp fajlu na išta), ali bez using namespace (jer mi to onda ostaje i u ostatku .cpp datoteke, što možda ne bih htio neki drugi put ako includam taj fajl - ako slučajno imam funkciju koja se jednako zove kao i ona iz std-a - npr. situacija sa swap je bila slična na vježbama).

Ja bi da pišem program .h fajl napisao:

Kod:
#include <vector>
#include <set>

std::vector<int> fja(std::set<float>);


[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
marijap
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 21. 06. 2006. (19:04:40)
Postovi: (209)16
Spol: žensko
Sarma = la pohva - posuda
33 = 49 - 16
Lokacija: zg

PostPostano: 20:28 sri, 18. 4. 2007    Naslov: Citirajte i odgovorite

fala na savjetu, i meni je draže da su mi preglednije datoteke...
fala na savjetu, i meni je draže da su mi preglednije datoteke...


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Prethodni postovi:   
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 2. godine -> Računarski praktikum 1 Vremenska zona: GMT + 01:00.
Stranica 1 / 1.

 
Forum(o)Bir:  
Možete otvarati nove teme.
Možete odgovarati na postove.
Ne možete uređivati Vaše postove.
Ne možete izbrisati Vaše postove.
Ne možete glasovati u anketama.
You can attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2002 phpBB Group
Theme created by Vjacheslav Trushkin
HR (Cro) by Ančica Sečan