[ tomislav91 @ 02.06.2012. 09:16 ] @
Citat:
/*kreirati klasu student koja ima privatne clanove broj indeksa, godina rodjenja i ime studenta.
Napisati odg. funkcije za pojedinacni upis u te clanove, odnosno za citanje vrednosti istih
clanova. Konsturktor ima zadatak da upise za broj indeksa vrednost 111,za godinu rodjenja 1990, i ime studenta
marko markovica.Destruktor je prazan!. U glavnom programu napraviti jedan objekat ove klase.
*/


#include<iostream>
#include<string>
using namespace std;
class student
{
int br_indeksa;
int god_rodj;
char ime_stud[15];
public:
void upis1(int br_indeksa1, int god_rodj1);
void upis_imena(char *C);
void ispis_podataka();

student() {
br_indeksa=111;
god_rodj=1990;
ime_stud=("Marko Markovic");
}
~student();
};


void student::upis1(int br_indeksa1,int god_rodj1)
{
br_indeksa=br_indeksa1;
god_rodj=god_rodj1;
}
void student::upis_imena(char *C)
{
strcpy(ime_stud,C);
}
void student::ispis_podataka()
{
cout<<"Broj indeksa:"<<br_indeksa<<endl;
cout<<"Godina rodjenja:"<<god_rodj<<endl;
cout<<"Ime studenta:"<<ime_stud;
}
int main()
{
student osoba;
osoba.upis1(3213,1991);
osoba.upis_imena("toma");
osoba.ispis_podataka();
return 0;
}












Izbacuje error: Compiling...
sae.cppd:\program files\microsoft visual studio\myprojects\dsada\adas.cpp(17) : error C2106: '=' : left operand must be l-value

Error executing cl.exe.

sae.obj - 1 error(s), 0 warning(s)
[ Dexic @ 02.06.2012. 09:36 ] @
To obicno ide ovako:
char ime[] = "Marko Markovic";

Pogotovu ne [15] jer dosta ime_prezime kombinacija prelazi toliko karaktera.

Ali svejedno moze i:
char ime[30]; // recimo

ime = "Marko Markovic";
[ tomislav91 @ 02.06.2012. 09:49 ] @
kad prebacim to,izbaci mi

D:\SkripteVTS\II SEMESTAR\Objektno Orijentisano Programiranje\vezbe\klase6\dsad.cpp(24) : error C2440: '=' : cannot convert from 'char [15]' to 'char [30]'
There is no context in which this conversion is possible


Citat:
......

char ime_stud[30];

....

ime_stud="Marko Markovic";

...
[ Mihajlo Cvetanović @ 02.06.2012. 11:18 ] @
char[] je konstrukt nasleđen iz C-a, i mora da se koristi onako kako se to radilo u C-u. Jedna opcija je da imaš bafer fiksne dužine (char ime[FIKSNA_DUZINA]), pa ga popunjavaš sa strcpy(ime, "Marko Markovic") strogo vodeći računa da ne prekoračiš bafer. Druga opcija je da imaš samo pokazivač (char *ime), pa mu dodeljuješ vrednost sa strdup, ime = strdup("Marko Markovic") strogo vodeći računa da sve ono što si kreirao sa strdup moraš i da oslobodiš sa free. Najbolje rešenje je zapravo da umesto C koristiš C++ konstrukte, std::string, std::string ime, i u kodu bez vođenja računa o bilo čemu dodeliš mu vrednost sa elegantnim ime = "Marko Markovic".
[ Nedeljko @ 02.06.2012. 14:59 ] @
Tačno je ovo što kaže Mihajlo Cvetanović.

Dexic,

obzirom da je ovo ozbiljan forum, a ti si C/C++ očigledno pozaboravljao, molio bih te da ubuduće testiraš odgovore koje postavljaš na ovom forumu.
[ tomislav91 @ 05.06.2012. 13:21 ] @
Citat:
#include<iostream>
#include<string>
using namespace std;
class student
{
int br_indeksa;
int god_rodj;
string ime_stud;
public:
void upis1(int br_indeksa1, int god_rodj1);
void upis_imena(string ime1);
void ispis_podataka();

student() {
br_indeksa=111;
god_rodj=1990;
ime_stud="Marko Markovic";
}
~student();
};


void student::upis1(int br_indeksa1,int god_rodj1)
{
br_indeksa=br_indeksa1;
god_rodj=god_rodj1;
}
void student::upis_imena(string ime1)
{
ime_stud=ime1;
}
void student::ispis_podataka()
{
cout<<"Broj indeksa:"<<br_indeksa<<endl;
cout<<"Godina rodjenja:"<<god_rodj<<endl;
cout<<"Ime studenta:"<<ime_stud;
}
int main()
{
student osoba;
osoba.upis1(3213,1991);
osoba.upis_imena("toma");
osoba.ispis_podataka();
return 0;
}

Napisao sam ovako, po programu sintaksno nema gresaka, ali nece da odradi build...

--------------------Configuration: ss - Win32 Debug--------------------
Linking...
dsa.obj : error LNK2001: unresolved external symbol "public: __thiscall student::~student(void)" (??1student@@QAE@XZ)
Debug/ss.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

ss.exe - 2 error(s), 0 warning(s)





[ djoka_l @ 05.06.2012. 13:26 ] @
Nemoj da stavljaš quote tagove oko koda nego code.

Code (cpp):

#include<iostream>
#include<string>
using namespace std;
class student
{
int br_indeksa;
int god_rodj;
string ime_stud;
public:
void upis1(int br_indeksa1, int god_rodj1);
void upis_imena(string ime1);
void ispis_podataka();

student() {
br_indeksa=111;
god_rodj=1990;
ime_stud="Marko Markovic";
}
~student();
};


void student::upis1(int br_indeksa1,int god_rodj1)
{
br_indeksa=br_indeksa1;
god_rodj=god_rodj1;
}
void student::upis_imena(string ime1)
{
ime_stud=ime1;
}
void student::ispis_podataka()
{
cout<<"Broj indeksa:"<<br_indeksa<<endl;
cout<<"Godina rodjenja:"<<god_rodj<<endl;
cout<<"Ime studenta:"<<ime_stud;
}
int main()
{
student osoba;
osoba.upis1(3213,1991);
osoba.upis_imena("toma");
osoba.ispis_podataka();
return 0;
}
 


Greška ti je u destruktoru, more eksplicitno da se navede da je telo procedure prazno:

Code (cpp):

~student(){};
 


Onako kako si ti napisao, za kompajler znači, OK imam destruktor, ali ću ga napisati na drugom mestu...

[Ovu poruku je menjao djoka_l dana 05.06.2012. u 14:39 GMT+1]
[ tomislav91 @ 05.06.2012. 13:52 ] @
da,da to je to :) Hvala :)

[Ovu poruku je menjao tomislav91 dana 05.06.2012. u 15:15 GMT+1]
[ djoka_l @ 05.06.2012. 14:15 ] @
Kako ne izbacuje:
Code:

$ ./es003
Broj indeksa:3213
Godina rodjenja:1991
Ime studenta:toma$
[ tomislav91 @ 05.06.2012. 14:16 ] @
da,da sve je u redu,fali jedno endl pa mi pisalo u jednom redu to i Press any key... : )

Hvala ;)