Jag tyckte att det var ett vettigt sätt att lära sig klasser, så jag tog och började knåpa på en strängklass igår.
Hittils så har det gått jäkligt bra måste jag säga.
Jag har fått ihop medlemsfunktioner som set(), del(), realloc(ny_storlek), realloc_save(ny_storlek) som sparar strängen och gör "mer plats", append, lägga till innan osv.
Det har dock inte med saken att göra, än.
Just nu håller jag på att lära mig operator overloading, som hittils har gått rätt bra.
Om ni ursäktar den rätt kladdiga koden så länge.
TestString &TestString::operator+ (char *str)
{
if (!str)
return *this;
if (m_string && strlen(str)+strlen(m_string)+1 >= m_size-1)
realloc_save(strlen(str)+strlen(m_string)+2);
else if (!m_string)
return *this;
this->append(str);
return *this;
}
Problemet:
Den här koden funkar för tillfället prima:
TestString a(1); // minnesallokeringen sköter sig själv ändå, funderar på att göra om min constructor
a.set("abc");
a += "def";
Eller följande, funkar lika bra:
TestString a(1), b(1);
a.set("abc");
b = a + "def";
Jag kan alltså
1) Lägga ihop flera "strings" med +
2) Lägga till en char* på slutet med +
3) Blanda lite allmänt.
Men, äntligen till det riktiga problemet, jag kan INTE lägga ihop två char* eftersom jag inte "overloadat" den.
Funkar INTE:
TestString a(1);
a = "abc" + "def";
"error C2110: cannot add two pointers"
Går detta att lösa på något sätt och isåfall (ungefär?) hur? Orkar ärligt talat inte tänka för tillfället, ska ta och sova lite snart