Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » pointer to member function

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 < [ 2 ]
000
04.06.2006, 21:42 Uhr
kronos
Quotenfisch
(Operator)


Hey...
Ich möchte in einer Methode einem STL-Algorithmus eine andere, nicht-statische Methode der selben Klasse übergeben. Also sowas

C++:
class C
{
int f(int x) { ... }
int g() { transform(blub, blub, blub, &(this->f));
}


worauf es aber heißt
Code:
error: ISO C++ forbids taking the address of a bound member function to form a pointer to member function.  Say '&C::f'

was ich aber nicht tun kann, weil ja f wie gesagt nicht statisch ist.
Irgendwer 'nen Tipp?
--
main($)??<-$<='?'>>2?main($-!!putchar(
(("$;99M?GD??(??/x0d??/a:???;a"+'?'/4)
??($??)+'?'/3-2-1+$%2)??''?')):'?';??>
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
04.06.2006, 22:21 Uhr
kronos
Quotenfisch
(Operator)


Juhu:

Code:
nn.cpp: In member function 'void nn::mutate()':
nn.cpp:31: internal compiler error: in gimplify_expr, at gimplify.c:4199
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.
For Debian GNU/Linux specific bug reporting instructions,
see <URL:file:///usr/share/doc/gcc-4.0/README.Bugs>.


Hier der code:

C++:
void nn::mutate()
{
    int (nn::* x)(int) = &nn::mutate_unit;
    std::transform(net.begin(),net.end(),net.begin(),this->*x);

}


--
main($)??<-$<='?'>>2?main($-!!putchar(
(("$;99M?GD??(??/x0d??/a:???;a"+'?'/4)
??($??)+'?'/3-2-1+$%2)??''?')):'?';??>

Dieser Post wurde am 04.06.2006 um 22:23 Uhr von kronos editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
04.06.2006, 22:23 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


du kannst keine nicht statische funktion übergeben
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
04.06.2006, 22:28 Uhr
kronos
Quotenfisch
(Operator)


Aber einen pointer-to-non-static-member-function darf ich ja offenbar zuweisen. Da steht dann wohl der offset der funktion relativ zur objekt-addresse drin. Diese muss er beim Aufruf von this->*x dann nur noch draufrechnen, was ja auch klappt.
Warum kann ich das Teil dann nicht übergeben???

edit:
Was ich meine ist, dass der Aufruf von
(this->*x)(3);
funktioniert...
--
main($)??<-$<='?'>>2?main($-!!putchar(
(("$;99M?GD??(??/x0d??/a:???;a"+'?'/4)
??($??)+'?'/3-2-1+$%2)??''?')):'?';??>

Dieser Post wurde am 04.06.2006 um 22:35 Uhr von kronos editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
04.06.2006, 22:34 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


tjo weil das der compiler halt dann nicht begreift sonst würde er keinen internal compiler error schmeissen.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
04.06.2006, 23:07 Uhr
kronos
Quotenfisch
(Operator)


Hihi, mit

Code:
g++ -fms-extensions -Wno-pmf-conversions

schluckt das Luder
--
main($)??<-$<='?'>>2?main($-!!putchar(
(("$;99M?GD??(??/x0d??/a:???;a"+'?'/4)
??($??)+'?'/3-2-1+$%2)??''?')):'?';??>

Dieser Post wurde am 04.06.2006 um 23:11 Uhr von kronos editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
04.06.2006, 23:15 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


jo dann passts doch

"ms-extensions"

hrhr

wahrscheinlich steht in der hilfe:

ms-extensions - allows usage of dangerous and not recommended language extensions which are nearly always used by "billy and the gang"
--
class God : public ChuckNorris { };

Dieser Post wurde am 04.06.2006 um 23:16 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
04.06.2006, 23:24 Uhr
kronos
Quotenfisch
(Operator)


so ähnlich:

Code:
Disable pedantic warnings about constructs used in MFC, such as implicit int and getting pointer to member function via non-standard syntax.


Funktioniert übrigens immer noch nicht. Mir ist schon klar, dass der cast Schwachsinn ist, aber witzigerweise wird die Funktion sogar aufgerufen, nur der Parameter ist Müll. Das find' ich kurios.
--
main($)??<-$<='?'>>2?main($-!!putchar(
(("$;99M?GD??(??/x0d??/a:???;a"+'?'/4)
??($??)+'?'/3-2-1+$%2)??''?')):'?';??>

Dieser Post wurde am 04.06.2006 um 23:29 Uhr von kronos editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
05.06.2006, 00:40 Uhr
(un)wissender
Niveauwart



C++:
#include <functional>
std::transform(net.begin(),net.end(),net.begin(),mem_fun_ref(&nn::mutate_unit));


--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
05.06.2006, 01:07 Uhr
kronos
Quotenfisch
(Operator)


na also. danke!
--
main($)??<-$<='?'>>2?main($-!!putchar(
(("$;99M?GD??(??/x0d??/a:???;a"+'?'/4)
??($??)+'?'/3-2-1+$%2)??''?')):'?';??>
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ 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: