home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!news.encore.com!csar!foxtail!sdd.hp.com!elroy.jpl.nasa.gov!ames!agate!doc.ic.ac.uk!uknet!mcsun!inesc.inesc.pt!inesc!tac
- From: tac@rena.world (Telmo A. Carmo)
- Newsgroups: comp.lang.c++
- Subject: pointer to member in MSC 7.0
- Message-ID: <TAC.92Nov5183853@rena.world>
- Date: 5 Nov 92 18:38:53 GMT
- Sender: usenet@inesc.pt (USENET News System)
- Distribution: comp.lang.c++
- Organization: INESC
- Lines: 77
- Nntp-Posting-Host: rena.inesc.pt
-
-
- How does one implement a pointer to a member function
- in MSC 7.0
- I am not able to use pointers to derived class member functions
-
- here is a small example:
- ----------------------
-
- #include <stdio.h>
-
- class Object;
-
- /* Arg! beacuse MSC 7 doesn't allow
- typedef long (Object::*method)(); before class definition
- have to use a define
- */
-
- //#define mt long (Object::*)()
-
-
- class Object {
- public:
- int get() { return 2234;}
- long perform(long (Object::*)(),long);
- //long perform(mt,long);
- };
-
- //#undef mt
-
- typedef long (Object::*method)();
- typedef long (Object::*method1)(long);
-
- class AA : public Object {
- public:
- long test(long v);
- void Do(method,long);
- };
-
-
- long Object::perform(method m,long v)
- {
- method1 q = (method1)m;
- return (this->*q)(v);
- }
-
- void AA::Do(method m,long v)
- {
- perform(m,v);
- }
-
- long AA::test(long v)
- {
- printf("ld=%ld\n",v); return 0l;
- }
-
- main()
- {
- AA ole;
-
- method m = (method)&AA::test;
- /* ^-- ERROR */
- ole.Do(m,(long)23);
- return 0;
- }
-
- /*
- yy.cpp
- yy.cpp(47) : error C2642: cast to pointer to member must be
- from related pointer to member
-
- */
-
- How do I make this work?
-
- Thanks for any help.
-
- Telmo Carmo
-