class Osoba{
public:
char ime[20],prezime[20], spol;
int Postavi_atribute_O () {};
int Ispisi_atribute_O () {};
};
int main()
{
Osoba U1;
U1.ime[30]="asd";
cout<<U1.ime;
getch();
}
class Osoba{
public:
char ime[20],prezime[20], spol;
int Postavi_atribute_O () {};
int Ispisi_atribute_O () {};
};
int main()
{
Osoba U1;
U1.ime[30]="asd";
cout<<U1.ime;
getch();
}
Nisam siguran možda što si mijenjao broj članova polja u klasi i main funkciji, ali nisam siguran.
Naravno da ne radi kad nemaš returna u main funkciji.
...
...
class Osoba{
public:
char ime[20],prezime[20], spol;
int Postavi_atribute_O () {};
int Ispisi_atribute_O () {};
};
int main()
{
Osoba U1;
cin>>U1.ime;
cout<<U1.ime<<endl;
system("PAUSE");
}
Ovako mi radi, a kad dodjeljujem izbaci:
invalid conversion from `const char*' to `char'
ja bih da ja sam u programu napišem to "ime" bez da ga netko unese
char polje nije string objekt pa mu moraš dodijeliti vrijednost pomoću strcpy funkcije. npr:
strcpy(U1.ime, "Ante");
Tu već možeš vidjeti prednosti objektnog pristupa jer preko stringa (objekta) možeš koristiti = (direktno pridruživanje) dok kod proceduralnog pristupa moraš koristiti funkcije tipa strcpy.
char polje nije string objekt pa mu moraš dodijeliti vrijednost pomoću strcpy funkcije. npr:
strcpy(U1.ime, "Ante");
Tu već možeš vidjeti prednosti objektnog pristupa jer preko stringa (objekta) možeš koristiti = (direktno pridruživanje) dok kod proceduralnog pristupa moraš koristiti funkcije tipa strcpy.
e ovo radi, ali to mi nije ni palo na pamet :O
hvala
Naravno da ne radi kad nemaš returna u main funkciji.
Nema veze, return bi trebao staviti, ovak ga najvjerojatnije umjesto njega stavi kompajler sam i izbaci warning. Makisa, ipak stavi return, nemoj se oslanjati na "radi i ovako".
Mozes koristiti i string klasu iz STL-a, odmah mozes i gro metoda upotrijebiti nad tim objektom.
Zašto uopće i koristiš char niz kao podatkovni član klase, pošto se radi o C++ logično je da koristiš string niz.
...
Možda su tako učili u školi, mada nebih rekao, da je za školu većina bi ih rekli "imal koja dobra duša da mi uradi ovaj zadatak".
Da koristi string, učitavaj ga preko gets() funkcije, za stringove je bolja od cin-a.
Bolje ovako (ako oboje mislimo na string klasu):
#include <iostream>
#include <ostream>
#include <string>
int main()
{
std::string moj_string;
std::cin >> moj_string;
std::cout << moj_string;
return 0;
}
S tim da ce gornje rjesenje kad naleti na whitespace prestati unositi podatke u string. Ako mu trebaju i whitespaceovi, onda ovako:
#include <iostream>
#include <ostream>
#include <string>
int main()
{
std::string moj_string;
std::getline(std::cin, moj_string);
std::cout << moj_string;
return 0;
}
Za vise informacija o ovim funkcijama pogledati referencu.
...