Greška je u funkciji DajBoju. Ne možeš da kopiraš nizove operatorom =, a i treba da se ulaz iskopira u Boja, a ne obrnuto.
Uopšte, meni se čini da si izabrao malo pogrešan put da učiš C++. Ostavi za sad char* na miru i koristi std::string (deklarisan u header-u <string>). Yako bi umesto dela
Code:
void DajBoju (char *ulaz) {ulaz=Boja;}
private:
char Boja [20];
imao
Code:
void DajBoju (const std::string& ulaz) {Boja = ulaz;}
private:
std::string Boja;
I ne zaboravi na početku fajla
#include <string>
Pointeri su moćna stvar, ali mogu totalno da slude početnika, a čak i iskusni programeri umeju da naprave bagove koje je teško otkriti kada koriste char* i slične stvari.
Da napomenem da čuveni virus Nimda nikad ne bi nastao da su Microsoft-ovi programeri koristili std::string umesto char*.