Witam, mam nietypowy problem :) Otóż sprawa jest dość irytującą, gdyż nie chodzi tu o samo strcpy(), wtedy bym nie zakładał tego wątku.
Problem polega na tym, iż przy wywołaniu metody z klasy pochodnej ( od klasy abstrakcyjnej ) która jest zwykłym setterem, wychodzi mi info o tym, że jest problem z kopiowaniem do składowych ( Bus Error: 10 ). Zaznaczam, że składowe mają zarezerwowaną odpowiednią pamięc na stosie. I tu uwaga, to dotyczy sytuacji kiedy metoda jest wywołana na rzecz zwróconej referencji obiektu z metody wirtualnej klasy pochodnej ! Czyli np:
Parent->init(ptr).setFullName(const char, const char*)
init() tak jak wspomniałem to metoda polimorficzna. Bezpośrednie wywołanie Parent->setFullName() działa bez problemów !!!
Gdzie jest problem w takim razie ?
Metoda z klasy bazowej:
Person::virtual Person & init(void* data) = 0;
I polimorficzna z klasy pochodnej:
Soldier::Soldier & init(void* data)
Setter znajduje się oczywiście w klasie abstrakcyjnej i jest to zwykła metoda:
void setFullName(const char* cname, const char* csurname) {
cout << "name: " << cname << " surname: " << csurname << " sizeof: " << sizeof(name) << " / " << sizeof(surname) << endl;
strcpy(name, cname);
strcpy(surname, csurname);
}
Takiej zagadki to już dawno nie miałem :( Gdzie tkwi problem ?