Zdravím,
potřeboval bych pomoct s přetěžováním operátorů.
Nefunguje mi tenhle program, hlasi to nejake chyby:
#include <stdio.h>
#include <conio.h>
#include<math.h>
#include<stdlib.h>
#include <iostream>
#include <string.h>
using namespace std;
class Str
{
private:
char *buf;
public:
Str()
{
buf =0;
};
Str(const char* s)
{
buf = new char[ strlen( s) + 1]; // ALOKACE
strcpy( buf, s); ;
};
~Str() // DESTRUKTOR
{
delete[] buf; // uvolneni alokovaneho pole
};
Str& operator =( const Str& s);
Str operator+(const Str& s);
void vypis(); // FUNKCE
};
Str& Str::operator=( const Str&s)
{
delete[] buf; // uvolneni pameti
if ( s.buf==0 )
buf=0;
else
{
buf = new char[ strlen(s.buf) +1 ]; // alokace
strcpy(buf, s.buf);
}
return *this;
}
Str Str::operator + (const Str&s)
{
Str dalsi;
dalsi.buf= new char [ strlen(buf) + strlen(s.buf)+ 1];
strcpy(dalsi.buf, buf);
strcat(dalsi.buf, s.buf);
return dalsi;
}
void Str::vypis()
{
printf("\n%s",buf);
}
int main()
{
Str retezec("NECO");
Str retezec2;
Str retezec3("122");
retezec2 = retezec + retezec3;
retezec2.vypis();
getch();
return 0;
}
Nevíte někdo, co s tím?