nntp2http.com
Posting
Suche
Optionen
Hilfe & Kontakt

MessageMap - Funktionszeiger - VS2008 C++

Von: Claudia Maier (sonne@discardmail.com) [Profil]
Datum: 11.07.2009 10:55
Message-ID: <b15cf679-1da8-4e82-973e-3dc6e61f846a@32g2000yqj.googlegroups.com>
Newsgroup: de.comp.lang.iso-c++
Hallo,
ich benötige eine MessageMap.

Wer kann mir hier behilflich sein?

Also hier hänge ich.
http://www1.minpic.de/bild_anzeigen.php?id=78988&key=42868607&ende

Error   1       error C2440: '=' : cannot convert from 'void
(__thiscall
CRMessageMapTest::* )(void)' to 'PFNVOID'
c:\messagemap\rmessagemap\rmessagemap\rmessagemaptest.cpp
58      RMessageMap


Ist doch das gleiche, oder?
PFNVOID m_func;
void *m_func_test;


Was müsste ich tun, wenn ich das benötige?
Funktion(en)    double pMyFunc (int v1, float v2, double
v3,
CString v4, char v5)


Was wird da mit der 'schnellen' Schreibweise gemeint?
asdispatch[] =
{
1, &CRMessageTest::func1,
2, &CRMessageTest::func2,


Geht leider auch nicht.


Danke für Eure Hilfe.


Grüße Claudia Maier


H
#pragma once
//typedef void (*PFNVOID)(void);
typedef void (*PFNVOID)();
class CRMessageMapTest
{
private:
struct S_MYTAB
{
int m_Id;
PFNVOID m_func;
void *m_func_test;
};


S_MYTAB asdispatch[4];


public:
CRMessageMapTest(void);
~CRMessageMapTest(void);


void func1(void);
void func2(void);
void func3(void);
void func4(void);


void Start(void);
void Init(void);



};


CPP

#include "StdAfx.h"
#include "RMessageMapTest.h"


CRMessageMapTest::CRMessageMapTest(void)
{



}


CRMessageMapTest::~CRMessageMapTest(void)
{


}


void CRMessageMapTest::func1(void)
{
AfxMessageBox("M 1");


}


void CRMessageMapTest::func2(void)
{
AfxMessageBox("M 2");


}


void CRMessageMapTest::func3(void)
{
AfxMessageBox("M 3");


}


void CRMessageMapTest::func4(void)
{
AfxMessageBox("M 4");


}


void CRMessageMapTest::Start(void)
{
int iId;
iId = 3;
for ( int i=0; i<sizeof(asdispatch)/sizeof(asdispatch[0]); ++i )
{
if ( asdispatch[i].m_Id == iId )
{
asdispatch[i].m_func();
break;
}
}


}


void CRMessageMapTest::Init(void)
{
// ** Wie würde die 'schnelle' Schreibweise gehen?

/* asdispatch[] =
{
1, &CRMessageTest::func1,
2, &CRMessageTest::func2,
3, &CRMessageTest::func3,
4, &CRMessageTest::func4
} */


asdispatch[0].m_func = &CRMessageMapTest::func1;
/* asdispatch[1].m_func = &CRMessageMapTest::func2;
asdispatch[2].m_func = &CRMessageMapTest::func3;
asdispatch[3].m_func = &CRMessageMapTest::func4; */
//      asdispatch[0].m_func_test = &CRMessageMapTest::func1;
/* asdispatch[1].m_func_test = &CRMessageMapTest::func2;
asdispatch[2].m_func_test = &CRMessageMapTest::func3;
asdispatch[3].m_func_test = &CRMessageMapTest::func4; */


asdispatch[0].m_Id = 1;
asdispatch[1].m_Id = 2;
asdispatch[2].m_Id = 3;
asdispatch[3].m_Id = 4;

[ Auf dieses Posting antworten ]

Antworten