Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

2 Pocetnicka pitanja :)

[es] :: C/C++ programiranje :: C/C++ za početnike :: 2 Pocetnicka pitanja :)

[ Pregleda: 4018 | Odgovora: 18 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

blistock

Član broj: 2420
Poruke: 8
*.ptt.yu



Profil

icon 2 Pocetnicka pitanja :)19.02.2002. u 22:02 - pre 269 meseci
1. Kako mogu da znam da vec postoji resenje, odnosno neka funkcija ili klasa
koja radi ono sto meni treba, ako ne znam kakve funkcije uopste postoje (osim
onih najpoznatijih u iostream stdio i npr. stdlib). Drugim recima gde mogu da
skinem help, referencu ili sta vec, koji opsirno govori o npr. svim standardnim
zaglavljima i svim njihovim funkcijama (C/C++). Nadam se da me razumete. Do sada
sam nailazio na helpove koji opisuju samo najkoriscenija zaglavlja i njihove
funkcije (stdio.h i stdlib.h) dok npr. o iostream.h ili nekim drugim zaglavljima
nesto sasvim malo.

2. Ovo mi je trenutno najvaznije, mada je izuzetno pocetnicko pitanje :) npr.
imam main.cpp koji (nebitno) kreira samo jedan String objekat. String klasa je
deklarisana u posebnom String.hpp fajlu a implementacija metoda iz klase String
je u drugom String.cpp fajlu. Ja ovo nikada nisam ovako delio, vec sam u
String.hpp stavljao i deklaraciju i implementaciju/definiciju metoda (funckija
clanica), medutim cuo sam (od iskusnijih) da ovo treba ovako da se uradi, znaci
deklaracija String klase u String.hpp a implementacija u String.cpp.
Jedina stvar koja mi pravi problem :) je kako da sada ovo iskompajliram
i povezem. Ok u main.cpp stavim #include "string.hpp" a u string.cpp
stavim #include "string.hpp". Medjutim, u main.cpp ne prepoznaje String
type.
Code:

Ovaj kod sam izbrisao jer je nepotreban zbog koda koji je ispod.


Hteo bih da napomenem da ne obracate paznju na sintaksnu ispravnost samog
program, jer sve ovo (provereno) radi ako sve stavim u jedan fajl (String.hpp),
a ja sam mozda negde pogresio kada sam copy/paste :)

E sada verovatno sam negde trebao da stavim kljucnu rec extern ili sta vec da bi
se ovo linkovalo, ali ja do sada nisam uspeo da uradim kako treba:(

Koristim Borland C++ 5.02 IDE, znaci nije neki command line, mada bih vam bio
zahvalan ako biste mi i za command line objasnili proceduru, ako ne trazim
previse :) U BC++ 5.02 pokusao sa da sve ove fajlove stavim u jedan project, ali
ni tada nije bilo sve OK.
Sve ovo mi pretsavlja izuzetan problem, jer sve pisem u jednom fajlu ili i
deklaracije, prototipove funkcija stavim zajedno sa njihovim definicijama u
jednom hpp fajlu umesto odvojeno, jer ne znam kako da sve ovo povezem.
Nadam se da sam dobro objasnio moje probleme :)

Hvala unapred.

P.S. Izvinite ako je post previse dugacak :)

[Ovu poruku je menjao blistock dana 21.02.2002 u 02:12 AM GMT]
 
Odgovor na temu

Gojko Vujovic
Amsterdam, NL

Administrator
Član broj: 1
Poruke: 13651



+165 Profil

icon Re: 2 Pocetnicka pitanja :)20.02.2002. u 10:49 - pre 269 meseci
Posto ti kod sadrzi slovo i izmedju uglastih [] zagrada, sto spada u ubbc kod prema ovoj stranici, kod koji si postavio je potpuno neupotrebljiv.

Ili ga ocisti od ubbcode-a, ili ga okaci kao fajl uz poruku pa da ga skida samo onaj kome treba..
 
Odgovor na temu

blistock

Član broj: 2420
Poruke: 8
*.ptt.yu



Profil

icon Re: 2 Pocetnicka pitanja :)20.02.2002. u 15:26 - pre 269 meseci
Hvala na dobroj nameri ali nisi izgleda dobro procitao moj post, jer je kod sam
po sebi nebitan. Ja jos uvek ne znam zbog cega sam postovao bas string klasu,
ioako je dosta velika a nema potrebe za kompleksnoscu (kao sto je ova sada) da
bi se ovo objasnilo. Valjda sam tu klasu stavio jer sa njom trenutno radim i sa
njom sam trebutno najvise pokusavao ovo sto je u pitanju, neka je neko ko ima te
privilegije obrise, jer cu sada postovati drugi primer.
Code:

// fajl main.cpp
#include <iostream.h>

int main()
{
MyClass Instanca;
return 0;
}

// fajl MyClass.hpp
class MyClass
{
public:
void SetValue(int a);
int GetValue();
private:
int Var;
};

// fajl MyClass.cpp
void MyClass::SetValue(int a): Var(a) {}

int MyClass::GetValue() { return Var; }


Znaci sama sintaksa ovdenije bitna jer je ovo samo primer da bih objasnio na
sta mislim, odnosno na koji problem.
Ovo su tri posebna fajla.
Pitanje je isto
kao i ono gore sa tim sto je ovaj kod umesto onog gore, isto kao kada bi ovaj
kod bio umesto onog gore. Bio bih veoma zahvalan, ako bi ste mi sto pre izasli u
susret sa odgovorima. Pozdrav.
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
199.171.112.*



+6 Profil

icon Re: 2 Pocetnicka pitanja :)20.02.2002. u 16:05 - pre 269 meseci
Koliko mogu da zaključim na prvi pogled, kod je sasvim u redu. Meni se čini da nisi uključio String.cpp u projekat. Možeš li tačno da navedeš tekst greške koji dobijaš?

Što se tiče tvog pitanja u vezi referenci, pogledaj npr

http://www.cppreference.com/
 
Odgovor na temu

blistock

Član broj: 2420
Poruke: 8
*.ptt.yu



Profil

icon Re: 2 Pocetnicka pitanja :)20.02.2002. u 17:35 - pre 269 meseci
Nemoj pogresno da me shvatis ali vas ja nisam pitao za kod nego za sledece:
Imam jednu klasu (npr. MyClass) i sada AKO deklaraciju te klase kao i implementaciju njenih metoda smestim u jedan program (tamo gde koristim tu klasu) onda program radi, i dobijam jedan fajl npr. main.cpp gde je sve to smesteno:
Code:

// main.cpp
#include <iostream.h>
class MyClass
{
public:
int GetVar();
void SetVar(int);
private:
int var;
};

int MyClass::GetVar()
{ return var; }

void MyClass::SetVar(int a)
{ var = a; }

int main()
{
MyClass Test;
cout << "Ovo je uspelo." << endl;
return 0;
}


E sada sta ce biti ako odvojim sve ovo, i onda deklaraciju MyClass stavim u poseban heder MyClass.hpp, implemetaciju njenih metoda stavim u MyClass.cpp a u main.cpp ostaje samo program koji koristi tu klasu i dobijemo:
Code:

// prvi fajl MyClass.hpp
class MyClass
{
public:
int GetVar();
void SetVar(int);
private:
int var;
};

// drugi fajl MyClass.cpp
#include <MyClass.hpp>
int MyClass::GetVar()
{ return var; }

void MyClass::SetVar(int a)
{ var = a; }

// treci fajl main.cpp
#include "MyClass.hpp"
#include <iostream.h>

int main()
{
MyClass Test;
cout << "Da li ce ovo povezivanje vise fajlova uspeti ?? " << endl;
return 0;
}


Da li me sada razumete ? Kako da sve ove fajlove zajedno povezem i iskompajliram ? Kako da deklaracije u MyClass.hpp znaju gde se nalaze njihove implementacije (u MyClass.cpp) ? Mozda negde treba staviti extern ali ja ne znam gde, odonosno pokusavao sam ali mi nije uspelo.
Nadam se da je sada jasnije sta sam hteo da pitam, ako nije recite opet pa cu se opet potruditi da objasnim, sve ovo jer mi je stalo da naucim ovo. Znaci kako iskompajlirati i povezati vise fajlova u ovom (i uopste) slucaju.
Koristim Borland C++ 5.02 IDE, ali ako vam nije testo recite mi proceduru i za command line. Pozdrav.
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
199.171.112.*



+6 Profil

icon Re: 2 Pocetnicka pitanja :)20.02.2002. u 17:45 - pre 269 meseci
Ma jasno mi je šta hoćeš, ali ne znam kako da ti pomognem ako mi ne navedeš tačan tekst greške koju dobiješ.

Još jednom, ja mislim da String.cpp nisi uključio u projekat, ali to je samo nagađanje.

Inače, toplo ti preporučujem da pročitaš

http://www.elitesecurity.org/tema.php?TopicID=5768

ali ne onaj deo gde se govori o MFC-u, nego ispod toga.
 
Odgovor na temu

pegazus
Beograd

Član broj: 2413
Poruke: 52
*.matf.bg.ac.yu



Profil

icon Re: 2 Pocetnicka pitanja :)20.02.2002. u 17:51 - pre 269 meseci
Mislim da sam razumeo sta pitas.

Neka se program (PROJEKAT) sastoji iz datoteka.
Svaka definicija (zauzimanje memorije) vazi za ceo program,
bez obzira u kojoj se datoteci(tekstualnoj ili objektnoj)
sama definicija nalazi, ali C (C++ i vecina drugih pravodioca) ZAHTEVA (*)
da se svako ime koji se koristi u datoteci prethodno deklarise,
odnosno da se navede u kom kontekstu moze da se nadje u
tekstu programa na primer
int fakt(int);
znaci da je fakt (IME) funkcija koja ima jedan argument tipa int i ima (vraca)
vrednost tipa int.

Inace u svakom programu moze da postoji samo jedna definicija,
nekog objekta
Npr.
int fakt(int) {...}//definicija prethodno deklarisane f-je

Da bi u nekom programu u nekoj datoteci pr.cpp mogli da koristimo
funkciju fakt moramo uraditi sledece dve stvari

1.(zahtev kompajlera) Deklarisati funkciju pre njenog koriscenja
{ Dakle pisati int fakt(int); na pocetku svake datoteke gde se koristi
funkcija fakt }
{ ili PREPORUCENO u posebnoj datoteci recimo fakt.h napisati deklaraciju
funkcije fakt i u svakoj datoteci u kojoj koristimo funkciju prethodno
ukljucimo datoteku fakt.h direktivom #include "fakt.h" }

2.(zahtev linkera) U program uvesti i definiciju fukcije.
Dakle zajedno linkovati i definiciju funcije (datoteka fakt.cpp ili fakt.o)

>g++ fakt.cpp pr.cpp (unix based OS)

Bas sam bio inspirisan :)
 
Odgovor na temu

pegazus
Beograd

Član broj: 2413
Poruke: 52
*.ptt.yu



Profil

icon Re: 2 Pocetnicka pitanja :)21.02.2002. u 00:08 - pre 269 meseci
Mozda je problem i u nacinu na koji pravis projekata
Probaj sa NEW, pa nadje nesto kao CONSOLE APPLICATION
pa kad hoces nesto da dodas projektu, ti idi na
Project add, pa onda open ili add source file.
Nisam bas familijaran sa tvojim okruzenjem,
ali sustina prevodjena programa je u prethodnom postu.
 
Odgovor na temu

blistock

Član broj: 2420
Poruke: 8
*.ptt.yu



Profil

icon Re: 2 Pocetnicka pitanja :)21.02.2002. u 01:13 - pre 269 meseci
Uf, momci mozda sam dosadan :) ali evo konkretno sta sam sada pokusao i sta mi nije uspelo.
Kao prvo nocas sam skinuo DEV-C++ (za windows) i uradio sve normalno, napravio console C++ project, ubacio main.cpp i test.cpp i radio je normalno!! Ali DEV-C++ nije hteo da radi sa nekim programima (pogotovu ako prave neke fajlove na disku) kao BC++. Sa druge strane pod BC++ nisam uspeo da iskompajliram ovo sto sam iskompajlirao pod DEV-C++, neverovatno!Evo sta je bilo za BC++, u jednom direktorijumu su mi sva tri fajla (main.cpp, test.hpp, test.cpp). (Neka vas ne zbuni sto ovo postujem iz Linuxa a koristim BC++, jer trenutno ne mogu iz Windowsa na internet). Znaci iz BC++ napravio sam novi project (naravno Console application) u tom istom direktorijumu. U taj project sam ubacio main.cpp i test.cpp :
Code:

// main.cpp
#include "test.hpp"

int main()
{
    Worker Daniel;
   Daniel.SetName();
   Daniel.DisplayName();

   system("pause");
   return 0;
}

// test.cpp
#ifndef TEST_HPP
    #define TEST_HPP
       #include "test.hpp"
#endif

void Worker::SetName()
{
    cout << "Unesite ime za radnika: ";
   cin.getline(itsName, 80);
}

void Worker::DisplayName()
{
    cout << "Ime: " << itsName << endl;
}


Fajl test.hpp nisam ubacivao u project jer je on "includovan", (predprocesorske direktive, tj. zastitu stavio sam da se ne bi pjavljivalo dvaput isto icludovanje u okviru projecta ... nevazno) evo hpp fajla:
Code:

// test.hpp
#ifndef IOSTREAM_H
#define IOSTREAM_H
#include <IOSTREAM.H>
#endif

#ifndef STDLIB_H
#define STDLIB_H
#include <STDLIB.H>
#endif

class Worker
{
    public:
       void SetName(); //{ cin.getline(itsName, 80); }
      void DisplayName(); //{ cout << "Its Name: " << itsName << endl; }
   private:
       char itsName[80];
};


E to je sve (nadam se da nista nisam nejasno napisao :)), i kada sam pokusao da ovo prevedem (u BC++) dobio sam glavnu poruku "This component must be run from the Borland C++ IDE", a poruka o gresci je "Could not load: tlink.exe". Eto to je ceo "pokusaj" :((
Neko mi je odavno rekao da trebam negde da stavim extern, da bih sve ovo uspesno preveo i povezao, ali ne znam gde :(

Nevezano da li je ovo uspelo ili ne, da li mozete da mi kazete kako bih u Windowsu, sa (command line) Borlandovim BC iz komandne linije isto ovo uradio ? Da li moram da pravim neki makefile (koji iskreno, ne znam da napravim) u komandnoj liniji, jer tamo nemam project u koji mogu da stavim zajedno main.cpp i test.cpp ?

Ako ne znate zasto mi se sve ovo dogadja razlicito pod dva razlicita kompajlera predlozite mi (ako znate) neki C++ IDE sa kompajlerom za Windows, koji mogu da skinem.

Jos jednom hvala sto ste se potrudili da mi i ovoliko odgovorite :)
 
Odgovor na temu

ouros
Seattle, WA

Član broj: 342
Poruke: 275
*.uv2a.csupomona.edu

ICQ: 83493423


Profil

icon Re: 2 Pocetnicka pitanja :)21.02.2002. u 01:43 - pre 269 meseci
Ok, slusaj, ja sam imao isti problem, samo sa Visual C++. Mislim da je slicno sa Borland-om.

Ajde da probam da ti objasnim slikovito. Sa leve strane imas kao tree gde imas "direktorijume"
- Source Code
- Header Files
-External Resources
sa desne strane ti je code.

E sad file main.cpp stavi u Source Code,
member_functions_file.cpp stavi u External Resources
header.h file stavi u Header Files.

u main.cpp
stavi
#include "member_funstioncs_file.cpp"
#include "header.h"

i trebalo bi da ti radi.

ajde pa srecno
 
Odgovor na temu

blistock

Član broj: 2420
Poruke: 8
*.ptt.yu



Profil

icon Re: 2 Pocetnicka pitanja :)21.02.2002. u 02:37 - pre 269 meseci
Pazi ovako i meni ovo duze vreme stvara probleme, i ja sam isto ovo ovako resio, ukljucim cpp fajl gde su mi definicije funkcija i gotovo, ili stavim definicije u heder hpp fajl, ali sam negde procitao da se programeri na vecim projektima drze pravila da deklaracije stavljaju u heder *.hpp fajl a definicije/implementacija stave u poseban *.cpp fajl a ukljucucuju u svoj projekt samo *.hpp fajl. Sve u svemu hvala. Znaci ostaje mi samo da mi neko odgovori na ono gore pitanje (pitanja :)). Pozdrav.
 
Odgovor na temu

ouros
Seattle, WA

Član broj: 342
Poruke: 275
*.uv2a.csupomona.edu

ICQ: 83493423


Profil

icon Re: 2 Pocetnicka pitanja :)21.02.2002. u 06:08 - pre 269 meseci
Citat:
blistock:
Pazi ovako i meni ovo duze vreme stvara probleme, i ja sam isto ovo ovako resio, ukljucim cpp fajl gde su mi definicije funkcija i gotovo, ili stavim definicije u heder hpp fajl, ali sam negde procitao da se programeri na vecim projektima drze pravila da deklaracije stavljaju u heder *.hpp fajl a definicije/implementacija stave u poseban *.cpp fajl a ukljucucuju u svoj projekt samo *.hpp fajl. Sve u svemu hvala. Znaci ostaje mi samo da mi neko odgovori na ono gore pitanje (pitanja :)). Pozdrav.


I ovo sto si rekao je tacno. Znaci deklaraciju stavis u header file *.h i stavis include taj file u main.cpp.
Implementaciju stavis u drugi *.cpp file koji ce se nalaziti u "source files" ali njega neces include, vec ce ga complier sam ukljuciti posto se vec nalazi u projektu.

razumeo ?


 
Odgovor na temu

blistock

Član broj: 2420
Poruke: 8
*.ptt.yu



Profil

icon Re: 2 Pocetnicka pitanja :)21.02.2002. u 06:43 - pre 269 meseci
Pa ja sam i rekao u mom gornjem postu da mi je uspelo da uradim tako (doduse samo u DevC++). Ali mi jos uvek trebaju odgovori u mom gornjem postu (post iznad tvog prvog odgovora).
 
Odgovor na temu

pegazus
Beograd

Član broj: 2413
Poruke: 52
*.matf.bg.ac.yu



Profil

icon Re: 2 Pocetnicka pitanja :)21.02.2002. u 16:07 - pre 269 meseci
Zasto ne koristis Linux kad ga imas.
Koristeci Windows alate tesko ces nauciti da programiras.
Napravljeni su da bi napravili od ljudi debile, koji misle da nesto znaju,
a ustvari nista ne shvataju.

Svako ko je neko koristi LinUx!
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
199.171.112.*



+6 Profil

icon Re: 2 Pocetnicka pitanja :)21.02.2002. u 17:41 - pre 269 meseci
Citat:
pegazus:
Zasto ne koristis Linux kad ga imas.
Koristeci Windows alate tesko ces nauciti da programiras.
Napravljeni su da bi napravili od ljudi debile, koji misle da nesto znaju,
a ustvari nista ne shvataju.

Svako ko je neko koristi LinUx!


Pegazuse, ovakve poruke se obično brišu na ovom forumu. Ne koristimo izraze kao što je "debil", a i ne prepucavamo se oko operativnih sistema.

Molim te da nastaviš sa dobrim i korisnim postovima kakve si slao pre ovog poslednjeg.

Pozdrav.
 
Odgovor na temu

blistock

Član broj: 2420
Poruke: 8
*.ptt.yu



Profil

icon Re: 2 Pocetnicka pitanja :)21.02.2002. u 21:04 - pre 269 meseci
Dobro, a jel zna neko da mi odgovori na ovo gore ?

BTW Dragi Tata da li znas jos neli link slican onom gore koji si ostaio cppreference.com, samo da je jos vise detaljniji ?
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
199.171.112.*



+6 Profil

icon Re: 2 Pocetnicka pitanja :)21.02.2002. u 21:58 - pre 269 meseci
Ne mogu konkretno da se setim nekog detaljnijeg reference sajta, ali probunari malo po:

http://webnz.com/robert/cpp_site.html

Ako tamo ne nađeš, ne znam gde ćeš.

Što se tvog problema tiče, mogu jedino da ti kažem da extern ništa neće da ti pomogne. To je neka kvaka u vezi kompajlera. Pozivam ljude koji su radili u Borlandu 5.0 (Leka?) da pomognu čoveku.
 
Odgovor na temu

blistock

Član broj: 2420
Poruke: 8
*.ptt.yu



Profil

icon Re: 2 Pocetnicka pitanja :)21.02.2002. u 22:28 - pre 269 meseci
Ne, ne, ne treba mi mi nista sada vezano za BC++ IDE, nego me interesuje procedura kompajliranja iz command line (to je valjda isto i za borlandov kompiler ili bilo koji command line compiler). Znaci da li se pise, bcc main.cpp definicija.cpp definicija.hpp ili sta vec ? I kao se to posle linkuje, kao i to da li (ako zelim da kompajliram iz komandne linije) moram da pravim makefile(u windowsu) ?
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
199.171.112.*



+6 Profil

icon Re: 2 Pocetnicka pitanja :)21.02.2002. u 22:43 - pre 269 meseci
Citat:
blistock:
Ne, ne, ne treba mi mi nista sada vezano za BC++ IDE?


Nisam ja ni pomenuo IDE, nego Borlandov kompajler. Jednostavno, svaki kompajler ima svoje opcije. Na osnovu greške koje ti prijavljuje, rekao bih da ne poziva linker, a kako se to radi sa BC++om, pojma nemam. Zato ponovo pozivam ljude koji rade sa ovim kompajlerom da se jave i razreše situaciju.

 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: 2 Pocetnicka pitanja :)

[ Pregleda: 4018 | Odgovora: 18 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.