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

[c++] Przeciazanie operatora + char

Ostatnio zmodyfikowano 2013-06-09 00:34
Autor Wiadomość
wojownik266
Temat założony przez niniejszego użytkownika
[c++] Przeciazanie operatora + char
» 2013-06-05 12:51:47
Programu który widać poniżej nie da się skompilować i uruchomić. Czy ktoś mógłby powiedzieć dlaczego i co w tym programie jest źle zrobione?

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

class Mu
{
public:
    char * num;
    char * sum;
    Mu();
    char operator +( Mu c );
   
};
Mu::Mu()
{
    num = "ala";
    sum = "ola";
}
char Mu::operator +( Mu c )
{
    char * n;
    n = num + c.num;
}
int main()
{
    Mu m;
    char * n;
    n = m.num + "a";
    cout << n << endl;
    cin.get();
    return 0;
}
P-84913
cyklopek11
» 2013-06-05 13:33:10
Chcesz, aby lokalnie stworzony wskaźnik na char pokazywał na sumę wskaźników (które nie dotyczą tej samej tablicy, tego samego bloku danych) na char i do tego nic nie zwracasz ?
To jest totalnie bez sensu. Radzę poczytać o : "arytmetyce wskaźników, co ma sens a co nie".
 
Domniemam, że twoim celem była konkatenacja dwóch C-stringów? Tylko po co odkrywać koło od nowa jak te (i wiele innych rzeczy) masz w bibliotece <cstring> albo lepiej w klasie std::string?
No chyba, że w ramach ćwiczeń. Wtedy musisz dynamicznie alokować pamięć przez new.
Przerobiłeś kurs c++? Jak odpowiedź zaczyna się na literkę "n" to lepiej szybciutko tam zajrzyj.
P-84918
wojownik266
Temat założony przez niniejszego użytkownika
» 2013-06-05 14:01:13
No cóż pewnie będę musiał wrócić do kursu i trochę sobie jeszcze poczytać!? A tak w między czasie bardzo Ci dziękuję za odpowiedź i życzę miłego dnia!
P-84919
wojownik266
Temat założony przez niniejszego użytkownika
» 2013-06-05 16:00:52
Po powrocie do kursu i przeczytaniu go. W moim umyśle zrodził się pomysł na napisanie programu który widać nieco niżej. Czy ten program jest poprawnie napisanym programem pod względem gramatyki j. c++.? Zadaniem tego programu jest łączenie napisów... Program się kompiluje, uruchamia i coś tam sobie wypisuje. Według mnie jest poprawny ale zdaję sobie sprawę że mogę się mylić!? Dlatego proszę o sprawdzenie i ewentualne nasiennie (czyt. wytknięcie błędów) odpowiednich poprawek.  

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

class Str
{
public:
    string li;
    string mi;
    Str( string a, string b );
    Str operator +( const Str & c );
};
Str::Str( string a, string b )
{
    li = a;
    mi = b;
}

Str Str::operator +( const Str & c )
{
    Str st( " ala ", " ola " );
    st.li = st.li + c.li;
   
    return st;
}
int main()
{
    Str sr( " ala ", " ola " );
    Str s( " zaba ", " wada " );
    sr = sr + sr;
    s = s + s;
    cout << sr.li << endl;
    cout << s.li << endl;
    cin.get();
    return 0;
}
 
P-84924
akwes
» 2013-06-05 16:11:10
Jesteś pewien co do funkcji operatora przypisania? http://ideone.com/g8xxsq

Ktoś kto użyje Twojego kodu zobaczy jakieś dziwne ole albo ale, mimo, że nigdy ich nie definiował.
P-84925
wojownik266
Temat założony przez niniejszego użytkownika
» 2013-06-05 16:24:26
A da się jakoś inaczej ten program napisać, z ominięciem tych mankamentów o których wspominasz? Pytam ponieważ parę godzin temu zabrałem się za naukę przeciążania operatorów i siła rzeczy jeszcze wszystkiego nie umiem. Zauważyłem też, nie wiem czy słusznie, że pisanie przeciążonych operatorów jest nierozerwalnie złączone z definiowaniem konstruktorów bez którego to konstruowania przeciążanie nie działa. Przynajmniej podczas definiowania operatora w klasie. Czy to jest normalne czy też można to jakoś obejść?
P-84928
DejaVu
» 2013-06-09 00:34:09
P-85226
« 1 »
  Strona 1 z 1