Ach jo, dost mě štve, že sem pořád píšu takový prkotiny a neumím se s tím vypořádat, ale prostě to nejde :(
Mám následující problém. Zkrátka potřebuju ve třídě přetížit operátor sčítání pro řetězce. Tak jsem to zkusil nějak takhle:
class String
{
private:
char * str;
int len;
public:
String(const char * s);
String();
String(const String & st);
~String();
int lenght() const { return len; }
// přetížené operátory
String & operator=(const String & st); // operátor přiřazení
String & operator=(const char * s); // operátor přiřazení č. 2
// spřátelené funkce
friend bool operator>(const String &st1, const String &st2);
friend bool operator<(const String &st, const String &st2);
friend bool operator==(const String &st, const String &st2);
friend ostream & operator<<(ostream & os, const String & st);
friend istream & operator>>(istream & is, String & st);
friend String & operator+(const String & t1, const String t2);
};
String & operator+(const String & t1, const String t2)
{
String temp;
temp.len = strlen(t1.str) + strlen(t2.str);
temp.str = new char[temp.len+1];
temp.str = strcat(t1.str , t2.str);
return temp;
}
Zkoušel sem i strcpy(temp.str, strcat(t1.str, t2.str); ale taky nejde.
Funkce je jako friendly. Ovšem kdyz pak udělam objekty String A String B a pak dam cout<<A + B; tak se to nějak sekne a nic to nevypíše. Slouží vůbec funkce strcat() na spojení stringu? Někde sem si přečet že jo.
Díky za objasnění problému.