读书人

函数转换时碰到有关问题未破各位朋

发布时间: 2013-12-28 22:19:33 作者: rapoo

函数转换时碰到问题,未破,求助各位朋友,非常感谢!!!
编译时的错误提示:

pmd/pmdEDU.cpp: In function ‘int (* getEntryFuncByType(EDU_TYPES))(pmdEDUCB*, void*)’:
pmd/pmdEDU.cpp:94:4: error: invalid conversion from ‘int (*)(pmdEDUCB, void*)’ to ‘pmdEntryPoint {aka int (*)(pmdEDUCB*, void*)}’ [-fpermissive]
} ;


其中函数的声明及实现如下:

头文件中声明:
pmdEDU.hpp

typedef int (*pmdEntryPoint) ( pmdEDUCB *, void * ) ;
pmdEntryPoint getEntryFuncByType ( EDU_TYPES type ) ;

int pmdAgentEntryPoint ( pmdEDUCB *cb, void *arg ) ;


pmdEDU.cpp文件中实现代码如下:

struct _eduEntryInfo
{
EDU_TYPES type ;
int regResult ;
pmdEntryPoint entryFunc ;
} ;
define ON_EDUTYPE_TO_ENTRY1(type,system,entry,desp) \
{ type, registerEDUName(type,desp,system), entry }

pmdEntryPoint getEntryFuncByType ( EDU_TYPES type )
{
pmdEntryPoint rt = NULL ;
static const _eduEntryInfo entry[] = {
ON_EDUTYPE_TO_ENTRY1 ( EDU_TYPE_AGENT, false,
pmdAgentEntryPoint,
"Agent" ),
ON_EDUTYPE_TO_ENTRY1 ( EDU_TYPE_TCPLISTENER, true,
pmdTcpListenerEntryPoint,
"TCPListener" ),
ON_EDUTYPE_TO_ENTRY1 ( EDU_TYPE_MAXIMUM, false,
NULL,
"Unknown" )
} ;
static const unsigned int number = sizeof ( entry ) /
sizeof ( _eduEntryInfo ) ;
unsigned int index = 0 ;
for ( ; index < number; ++index )
{
if ( entry[index].type == type )
{
rt = entry[index].entryFunc ;
goto done ;
}
}
done :
return rt ;
}


编译环境:debian sid g++4.8.2

我没发现问题出现在哪儿,烦劳各位
[解决办法]
这个函数 pmdTcpListenerEntryPoint 怎么声明的,这样 int (pmdEDUCB*, void*),还是这样 int (pmdEDUCB, void*)?

[解决办法]
pmdAgentEntryPoint 和pmdTcpListenerEntryPoint中至少有一个和pmdAgentEntryPoint的定义不符合

读书人网 >C++

热点推荐