读书人

.c改为.cpp,在bc++ 3.1中结构体中的

发布时间: 2012-02-07 17:45:36 作者: rapoo

.c改为.cpp,在bc++ 3.1中,结构体中的函数指针形参为本结构体,编译通不过?求助...
结构体:
struct CDialog{
int left,top,right,bottom; /* 边界值 */
char *title; /* 对话窗口名字 */
int (* draw)(); /* 初始化对话窗口客户区 */
int (* react)(); /* 当lbutton点中客户区时被调用来处理该事件 */
int close; /* 标志是否可以显示关闭按钮 */
int move; /* 标志是否可以用鼠标移动 */
int active; /* 当时是否被打开,用于无模式对话框的设计 */
int SaveDialogImage[XMS_BLOCK_NUM]; /* 保存窗口界面 */
int SaveDialogBack[XMS_BLOCK_NUM]; /* 保存背景 */
int BackImageBlockNum;
};

static int gMessageBoxDraw(struct CDialog bm)
{ ....
}

int InitDialog(struct CDialog *bm)
{............
/*****下面怎么写或者结构体怎么写才通过编译......
//int (*drawx)(struct CDialog bm);
//typedef int (*drawxType)(struct CDialog bm);
//drawx=(*bm).draw;
//(*drawx)(*bm);
(*(*bm).draw) (*bm);
}


main{
bm.draw=(int (*)())gMessageBoxDraw;
InitDialog(...)
}



[解决办法]
(*(*bm).draw) (*bm);
==》
(*(*bm).draw) (); // struct 原型中没有 参数
[解决办法]
struct CDialog{
int left,top,right,bottom; /* 边界值 */
char *title; /* 对话窗口名字 */
int (* draw)(); /* 初始化对话窗口客户区 */ ==》int (* draw)(struct CDialog *);
...

或者是 把声明加上这个 参数部分
[解决办法]
C里面,函数的int test()表示不定参数,可以在调用时输入任意参数。
C++里,函数的int test()表示无参数,相当于int test(void)

读书人网 >C++

热点推荐