Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Dodanie dwóch ciągów char - obiektowo, własna klasa

Ostatnio zmodyfikowano 2016-04-10 19:53
Autor Wiadomość
przemo191
Temat założony przez niniejszego użytkownika
Dodanie dwóch ciągów char - obiektowo, własna klasa
» 2016-04-10 16:28:15
Witam, mam pewien problem z "ogarnięciem" tematu obiektowości, dopiero raczkuję w tym temacie. 

Stworzyłem sobie własną klasę string1 oraz pochodną wypisz.
Chciałbym dodać do siebie dwa ciągi znaków, ale nie wiem jak.

C/C++
#include<iostream>
#include<string.h>
using namespace std;

class string1 {
    int rozmiar;
    char * wsk;
public:
   
    string1( char t[] )
        : rozmiar( strlen( t ) )
         , wsk( new char[ rozmiar + 1 ] )
    {
        strcpy( wsk, t );
    }
   
    void wypisz() {
        cout << wsk << endl;
    }
   
    void dodaj() {
       
    }
   
};

int main() {
   
    string1 s1 = "ABC";
    string1 s2 = "DEF";
   
   
    s1.wypisz();
    s2.wypisz();
   
   
    system( "pause" );
}

Nie mogę przestawić się ciągle ze strukturalnego pisania.
Pomysł jaki miałem na ten problem to
C/C++
void dodaj( const char t1[] ) {
    this->t[] = t[] + t1[];
}
A w main()
C/C++
s2.dodaj( s1 );
Niestety ale nie działa mi on.
W wynikiem tej operacji byłby ciąg
DEFABC
 
Czy mógłby ktoś mnie naprowadzić na rozwiązanie moje problemu?
P-147159
jankowalski25
» 2016-04-10 16:57:23
P-147160
przemo191
Temat założony przez niniejszego użytkownika
» 2016-04-10 19:53:32
Dziękuję za naprowadzenie, mój program działa tak jak tego chciałem, tylko pytanie czy zgodnie ze sztuką?
Czy mógłby ktoś zerknąć i stwierdzić "Twój kod jest mierny ale działa", lub "Twój kod nie ma prawa działać i jest do d..." :)
 
C/C++
#include<iostream>
#include<string.h>
using namespace std;

class string1 {
    int rozmiar;
    char * wsk;
public:
   
    string1( char t[] )
        : rozmiar( strlen( t ) )
         , wsk( new char[ rozmiar + 1 ] )
    {
        strcpy( wsk, t );
    }
   
    void wypisz() {
        cout << wsk << endl;
    }
   
    int lenght() {
        return strlen( wsk );
    }
   
   
   
    void dodaj( string1 x ) {
        int rozmiar_x = x.lenght();
       
        char * wsk2 = new char[ rozmiar + rozmiar_x + 1 ];
        strcpy( wsk2, this->wsk );
        strcat( wsk2, x.wsk );
        delete[] wsk;
        // cout << &wsk << endl;
        // cout << &wsk2 << endl;
       
        this->wsk = wsk2;
    }
   
};

int main() {
   
    string1 s1 = "ABC";
    string1 s2 = "DEFG";
   
   
    s1.wypisz();
    s2.wypisz();
   
    s1.dodaj( s2 );
    s1.wypisz();
   
    system( "pause" );
}
P-147169
« 1 »
  Strona 1 z 1