关于函数声明与函数参数中类定义的先后问题

/etc/fstab 2010-04-28 03:48:16
简化模型代码如下,请高人指点...



//#include "stdafx.h"
#include "stdio.h"

void fun(test); //函数声明,这里要用到test类的参数
//[!!]由于某些特殊原因,fun必须作为外部函数而不能作为test的成员函数!!

class test{ //类声明
public:
int a;
void (*v)(void); //函数指针.
test(){
v = fun;
}
};

void fun(test t){
t.a=1;
}

int main(){
test tt;
fun(tt);
return 0;
}




编译不能顺利通过.以下方法已经尝试但貌似都不行:
1\去掉 void fun(test); 的一行;
2\将void fun(test);中的test去掉;
3\去掉void fun(test);之后:
将fun的声明和test的声明顺序做调换.
...全文
97 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
linsen_519 2010-04-28
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 haobibo 的回复:]

感谢 linsen_519 的提醒.
初学者致谢!!
如下代码通过.



C/C++ code


#include "stdafx.h"
#include "stdio.h"

//void fun(test);

class test{
public:
int a;
friend void fun(test); //函数指针.
tes……
[/Quote]

哈哈 客气~ 一起进步~
zzmlake 2010-04-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 haobibo 的回复:]
( ⊙ o ⊙ )啊!
二楼说的对...可是我该解决这个问题呢...
在 void (*v)(参数); 参数的地方我还没办法知道具体的参数啊...
[/Quote]

回忆一下链表的定义,直接用没问题的
/etc/fstab 2010-04-28
  • 打赏
  • 举报
回复
感谢 linsen_519 的提醒.
初学者致谢!!
如下代码通过.





#include "stdafx.h"
#include "stdio.h"

//void fun(test);

class test{
public:
int a;
friend void fun(test); //函数指针.
test(){
printf("hello!\n");
}
};

void fun(test t){
t.a=1;
}

int main(){
test tt;
fun(tt);
return 0;
}



pengzhixi 2010-04-28
  • 打赏
  • 举报
回复

#include<iostream>
using namespace std;
class test;
void fun(test); //函数声明,这里要用到test类的参数


class test{ //类声明
public:
int a;
void (*v)(test); //函数指针.
test(){
v = fun;
}
};

void fun(test t){
t.a=1;
}

int main(){
test tt;
fun(tt);

system("pause");
return 0;
}


/etc/fstab 2010-04-28
  • 打赏
  • 举报
回复
请 大家 明示~~
/etc/fstab 2010-04-28
  • 打赏
  • 举报
回复
( ⊙ o ⊙ )啊!
二楼说的对...可是我该解决这个问题呢...
在 void (*v)(参数); 参数的地方我还没办法知道具体的参数啊...
linsen_519 2010-04-28
  • 打赏
  • 举报
回复
这不正好是 友元大显神威的地方吗?
aweer 2010-04-28
  • 打赏
  • 举报
回复
void (*v)(void); 和void fun(test);

形参都不匹配

64,281

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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