[c++] Przeciazanie operatora + char
Ostatnio zmodyfikowano 2013-06-09 00:34
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? #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; }
|
|
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. |
|
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! |
|
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. #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; }
|
|
akwes |
» 2013-06-05 16:11:10 Jesteś pewien co do funkcji operatora przypisania? http://ideone.com/g8xxsqKtoś kto użyje Twojego kodu zobaczy jakieś dziwne ole albo ale, mimo, że nigdy ich nie definiował. |
|
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ść? |
|
DejaVu |
» 2013-06-09 00:34:09 |
|
« 1 » |