Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Operator()

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
17.11.2006, 15:26 Uhr
Pler
Einer von Vielen
(Operator)


Hallo!

Ich habe folgendes Programm.
Wegen der auskommentierten Zeile stürtzt das Prog. immer ab. (Seg. fault)


Bearbeitung:
Quellcode überarbeitet



C++:
#include <iostream>

class My{
private:
        int *_x;
public:
        My(){
                _x = new int[10];
        }
        ~My(){
                delete [] _x;
        }
        int &operator() (int pos){
                //return operator()(pos);
                return _x[pos];
        }
        const int &operator() (int pos) const{
                return _x[pos];
        }
};

int main()
{
        My my;
        int i;
        my(5)=6;
        i = my(5);
        std::cout << i << std::endl;
        return 0;
}


Warum?
Bzw. wie muss ich das aufrufen?
(Ich vermute zwar mal, dass es am const liegt, aber finde, dass es trotzdem funktionieren sollte.)

Dieser Post wurde am 17.11.2006 um 19:28 Uhr von Pler editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
17.11.2006, 15:29 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


mach ein return (const)operator()(pos) dann sollte es gehen. Ich hab bei der Aufgabe einfach eine Subfunktion definiert und die in beiden aufgerufen
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
17.11.2006, 15:56 Uhr
(un)wissender
Niveauwart


Woher kommt pos? Es fehlt auch ein Destruktor.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
17.11.2006, 18:44 Uhr
Pler
Einer von Vielen
(Operator)



Zitat von Flosoft:
mach ein return (const)operator()(pos) dann sollte es gehen. Ich hab bei der Aufgabe einfach eine Subfunktion definiert und die in beiden aufgerufen

Ja, zum Funktionieren hab ich's ja schon bekommen. Wollte aber aus interesse noch ein bisschen damit rumspielen.
Aber warum sollte es dadurch gehen?
Und wo genau meinst du?


Zitat von unwissender:
Woher kommt pos? Es fehlt auch ein Destruktor.
Oh, da hab ich wohl bei dem Versuch das ganze forumsgerecht anzupassen ein bisschen was vergessen. pos ist natürlich das Argument für die Methode.
Einen Destruktor brauch ich nicht

Dieser Post wurde am 17.11.2006 um 19:24 Uhr von Pler editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
17.11.2006, 19:33 Uhr
Pler
Einer von Vielen
(Operator)



Zitat von Flosoft:
mach ein return (const)operator()(pos) dann sollte es gehen.
Hab ich jetzt mal probiert:
Zitat von gcc:
g++ mytest.cpp -o mytest
mytest.cpp: In member function ‘const int& My::operator()(int) const’:
mytest.cpp:17: warning: returning reference to temporary

Laufen tuts trotzdem

Dieser Post wurde am 17.11.2006 um 19:36 Uhr von Pler editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: