首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

.c改为.cpp,在bc++ 3.1中,结构体中的函数指针形参为本结构体,编译通不过?

2012-02-07 
.c改为.cpp,在bc++ 3.1中,结构体中的函数指针形参为本结构体,编译通不过?求助...结构体:structCDialog{int

.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)

热点排行