From: "OmniMeta"
Newsgroups: comp.os.msdos.djgpp
Subject: Need help with class stuff
Lines: 72
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 5.00.2014.211
X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2014.211
Message-ID:
Date: Fri, 16 Jul 1999 17:25:23 -0300
NNTP-Posting-Host: 207.253.161.51
X-Complaints-To: abuse AT videotron DOT net
X-Trace: wagner.videotron.net 932160115 207.253.161.51 (Fri, 16 Jul 1999 17:21:55 EDT)
NNTP-Posting-Date: Fri, 16 Jul 1999 17:21:55 EDT
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com
This program call a class function using a pointer to it.
Can someone please tell me why I get the warning :
tst.cpp(44) Warning: converting from `void (Test::*)()' to `void (*)()'
tst.cpp(45) Warning: converting from `void (Test::*)()' to `void (*)()'
Here is the little program :
#include // printf
#include // clrscr getch
class Test
{
void Print1();
void Print2();
public:
void (*Action)(); // my pointer
char select(char key);
}ClassTest;
int main()
{
clrscr();
printf("Type 1 or 2 : "); fflush(stdout);
do{}
while( ClassTest.select(getch()) );
ClassTest.Action();
printf("\nPress a key to exit");
fflush(stdout);
getch();
return 0;
}
char Test::select(char key)
{
switch(key)
{ // I get the warning at
case '1': Action = &Print1; break; // this line
case '2': Action = &Print2; break; // And this line
default : return 1;
}
return 0;
}
void Test::Print1()
{
printf("\n\nHello !!!\nThis is what Print1 do.\n");
}
void Test::Print2()
{
printf("\n\nHello !!!\nThis is what Print2 do.\n");
}