奇怪的问题,如何通过类函数指针定义指针数组?

unalone 2003-10-10 10:03:31
extern "C" class CMathVm : public CVmBase
{
typedef unsigned int (CMathVm::*TMetaOp)(unsigned int iAddr,unsigned int iIn=0,
unsigned int iOut=0);
unsigned short m_Mask[32];
TMetaOp m_oplst[32];

const unsigned int Exp(unsigned int iAddr,unsigned int iIn=0,
unsigned int iOut=0);

public:
int CompuIt();
CMathVm();
virtual ~CMathVm();

};

如上的类定义,编译的时候出现如下错误:
“MathVM.obj : error LNK2001: unresolved external symbol "private: unsigned int __thiscall CMathVm::Exp(unsigned int,unsigned int,unsigned int)" (?Exp@CMathVm@@AAEIIII@Z)”

请问如何解决?
...全文
112 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
jing21997885 2003-10-25
  • 打赏
  • 举报
回复
原因:没有定义函数体,函数只有生命而没有实现。
hotness28 2003-10-11
  • 打赏
  • 举报
回复
CVmBase类没有连接好
看看是不是这个类包括进去了,而且里面的Exp函数得到了定义
头文件有没有包含?
zjg751206 2003-10-11
  • 打赏
  • 举报
回复
是否你类外面还有Exp函数,使用搜索把代码搜一遍,看有几个Exp;

unalone 2003-10-11
  • 打赏
  • 举报
回复
如果不进行付值操作,便已是可以正常通过的,但是,一旦将EXP函数地址付给指针数组的话,就会出现上面的错误

改成public并不会去掉这个错误,static也不行:(
unalone 2003-10-11
  • 打赏
  • 举报
回复
m_oplst[0]=Exp;

就是这样了:(
vcppman 2003-10-11
  • 打赏
  • 举报
回复
赋值语句你是怎么写的呀?
unalone 2003-10-11
  • 打赏
  • 举报
回复
自己up一下
unalone 2003-10-11
  • 打赏
  • 举报
回复
这是一个新建的控制台程序,其中,CVmBase类是一个虚基类,只有一个纯虚函数CompuIt(),而且,把这个Exp函数名称改成其他的也不可以,不知道是为什么?
vcforever 2003-10-10
  • 打赏
  • 举报
回复
你的Exp()函数是不是private的呀!
你把他改成public的试一试呢!
我象你的那种方式定义了一个函数指针,编译就通过了!

另外你的这个类是在DLL里定义的吧!错误提示好象是你的导出函数或导出类不对!
vcppman 2003-10-10
  • 打赏
  • 举报
回复
你可以把Exp函数定义成static的,然后在函数参数中加一个传this指针的参数!

static const unsigned int Exp(CMathVm* pThis,unsigned int iAddr,unsigned int iIn=0,unsigned int iOut=0);


typedef unsigned int (CMathVm::*TMetaOp)(CMathVm* pThis,unsigned int iAddr,unsigned int iIn=0,unsigned int iOut=0);
vcppman 2003-10-10
  • 打赏
  • 举报
回复
类中的成员函数中是有一个隐含的this指针的呀! 也就是提示中提到的__thiscall呀
unalone 2003-10-10
  • 打赏
  • 举报
回复
哦,对了,忘记说了,错误出现在将函数地址付给指针数组的时候。
lsl7909 2003-10-10
  • 打赏
  • 举报
回复
帮你顶一下

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧