Staram się "ogarnąć" magię klas... i napotkałem pewien, chyba dosyć podstawowy problem.
Otóż chodzi mi żeby przeciążyć operator + w taki sposób żeby "połączył" on napis w jedną całość... Czy byłby ktoś tak dobry i podpowiedział mi jak to zrobić? Wklejam moje żałosne próby (mam nadzieję, że zilustruje to problem jaki chcę rozwiązać).
Oto kod:
Kod: Zaznacz cały
#include <iostream>
#include <cstring>
#include <cctype>
using namespace std;
class String {
char* s_;
public:
/*Konstruktory*/
//String();
String(const char* s);
//String(const String& s);
String operator+ (const char* n) const;
//String operator+ (const String& s) const;
//size_t length() const;
/*Destruktor*/
~String();
};
String::String(const char*s)
{
cout<<"Dziala konstruktor char*s"<<endl;
int i;
for(i=0;s[i]!='\0';i++);
i++;
s_=new char[i];
s_=(char*)s;
}
String::~String()
{
cout<<"Teraz dziala destruktor"<<endl;
delete [] s_;
}
String String::operator+(const char*n)const
{
cout<<"dziala operator +"<<endl;
int i,j;
char*ptr;
for(i=0;n[i]!='\0';i++);
i++;
ptr=new char[i];
cout<<sizeof(s_)<<endl;
//return
}
int main() {
using std::cout; using std::endl; using std::boolalpha;
String s = "Teskt1 " + String("Tekst2 ") + "Tekst3";
}