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

problem klase left operand must be l-value

[es] :: C/C++ programiranje :: problem klase left operand must be l-value

[ Pregleda: 1836 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

tomislav91

Član broj: 206601
Poruke: 316
*.dynamic.isp.telekom.rs.



+1 Profil

icon problem klase left operand must be l-value02.06.2012. u 09:16 - pre 144 meseci
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)
life is the one,take care of them!

http://hardware-software.serbianforum.info/
 
Odgovor na temu

Dexic
ASP

Član broj: 253999
Poruke: 3837



+1376 Profil

icon Re: problem klase left operand must be l-value02.06.2012. u 09:36 - pre 144 meseci
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";
 
Odgovor na temu

tomislav91

Član broj: 206601
Poruke: 316
*.dynamic.isp.telekom.rs.



+1 Profil

icon Re: problem klase left operand must be l-value02.06.2012. u 09:49 - pre 144 meseci
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";

...

life is the one,take care of them!

http://hardware-software.serbianforum.info/
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: problem klase left operand must be l-value02.06.2012. u 11:18 - pre 144 meseci
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".
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.3gnet.mts.telekom.rs.



+2789 Profil

icon Re: problem klase left operand must be l-value02.06.2012. u 14:59 - pre 144 meseci
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.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

tomislav91

Član broj: 206601
Poruke: 316
*.nordnet.ws.



+1 Profil

icon Re: problem klase left operand must be l-value05.06.2012. u 13:21 - pre 144 meseci
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)






life is the one,take care of them!

http://hardware-software.serbianforum.info/
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3453

Jabber: djoka_l


+1462 Profil

icon Re: problem klase left operand must be l-value05.06.2012. u 13:26 - pre 144 meseci
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]
 
Odgovor na temu

tomislav91

Član broj: 206601
Poruke: 316
*.nordnet.ws.



+1 Profil

icon Re: problem klase left operand must be l-value05.06.2012. u 13:52 - pre 144 meseci
da,da to je to :) Hvala :)

[Ovu poruku je menjao tomislav91 dana 05.06.2012. u 15:15 GMT+1]
life is the one,take care of them!

http://hardware-software.serbianforum.info/
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3453

Jabber: djoka_l


+1462 Profil

icon Re: problem klase left operand must be l-value05.06.2012. u 14:15 - pre 144 meseci
Kako ne izbacuje:
Code:

$ ./es003
Broj indeksa:3213
Godina rodjenja:1991
Ime studenta:toma$
 
Odgovor na temu

tomislav91

Član broj: 206601
Poruke: 316
*.nordnet.ws.



+1 Profil

icon Re: problem klase left operand must be l-value05.06.2012. u 14:16 - pre 144 meseci
da,da sve je u redu,fali jedno endl pa mi pisalo u jednom redu to i Press any key... : )

Hvala ;)
life is the one,take care of them!

http://hardware-software.serbianforum.info/
 
Odgovor na temu

[es] :: C/C++ programiranje :: problem klase left operand must be l-value

[ Pregleda: 1836 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

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