No, więc mam pytanie dotyczące łączenia c-stringów. Otóż mam przeładować operator dodając do łańcucha znaków - łańcuch znaków z klasy. No i jak problem z dodawaniem c-stringów jako obiekty klasy rozwiązałem bez większych problemów to dodawanie do obiektu klasy łańcucha znaków sprawiło mi problemy.
Więc mam taką klasę:
class String
{
private:
char *str; //wskaźnik ciągu
int len; //długość ciągu
static int num_strings; //liczba obiektów klasy
static const int CINLIM = 80;
public:
/.../
friend String & operator+(const char* ok, String &s);
static int HowMany();
};
Wyciąłem resztę metod klasy, bo nie są tutaj potrzebne. A teraz samo przeładowanie.
String & operator+(const char* ok, String & s)
{
int dlugosc = sizeof(ok);
if(dlugosc == 0)
return s;
char *temp = new char [s.len+1];
strcpy(temp, s.str);
delete [] s.str;
s.str = new char [s.len+dlugosc+1];
strcpy(s.str, ok);
strcpy(s.str, temp);
return s;
}
I jest tutaj mały problem. Otóż napis się do klasy po prostu nie dodaje. Gdy później chcę zobaczyć efekt to gdy przychodzi połączyć łańcuch z klasą to na wyjściu dostaję część znajdującą się w klasie, ale bez doklejonego łańcucha. W czym więc jest problem? Nie można zastosować sizeof? Jeśli tak to macie może na to jakąś radę.
Z góry dziękuję za odpowiedź :).