| 查看: 710 | 回复: 9 | |||
| 当前主题已经存档。 | |||
硫代硫酸钠铜虫 (小有名气)
|
[交流]
【求助】c++程序改写成c程序
|
||
|
老师给的任务把面向对象的C++程序完全改成面向过程的C程序。 面向对象的C++程序是机器人带已经编写好的控制程序。 主要是把里面的类一层层的剥离出来吧? 但是都没有一点头绪! PS: 为了鼓励新虫,求助金币为10bb,由程序软件版代为奖励,请大家积极参与讨论 [ Last edited by wangen994 on 2009-8-15 at 22:52 ] |
» 猜你喜欢
请问有评职称,把科研教学业绩算分排序的高校吗
已经有6人回复
2025冷门绝学什么时候出结果
已经有6人回复
Bioresource Technology期刊,第一次返修的时候被退回好几次了
已经有7人回复
真诚求助:手里的省社科项目结项要求主持人一篇中文核心,有什么渠道能发核心吗
已经有8人回复
寻求一种能扛住强氧化性腐蚀性的容器密封件
已经有5人回复
请问哪里可以有青B申请的本子可以借鉴一下。
已经有4人回复
请问下大家为什么这个铃木偶联几乎不反应呢
已经有5人回复
天津工业大学郑柳春团队欢迎化学化工、高分子化学或有机合成方向的博士生和硕士生加入
已经有4人回复
康复大学泰山学者周祺惠团队招收博士研究生
已经有6人回复
AI论文写作工具:是科研加速器还是学术作弊器?
已经有3人回复

feichengxyz
铁杆木虫 (著名写手)
- 应助: 1 (幼儿园)
- 金币: 8538.5
- 散金: 60
- 红花: 4
- 帖子: 1162
- 在线: 908.2小时
- 虫号: 425858
- 注册: 2007-07-28
- 性别: GG
- 专业: 催化化学
2楼2009-08-16 09:18:36
woshilsh
荣誉版主 (职业作家)
- 应助: 43 (小学生)
- 贵宾: 10.33
- 金币: 21115.1
- 散金: 737
- 红花: 22
- 帖子: 3777
- 在线: 639.7小时
- 虫号: 293038
- 注册: 2006-11-04
- 专业: 计算机应用技术
- 管辖: 仿真模拟

3楼2009-08-16 10:31:59

4楼2009-08-17 09:23:14
硫代硫酸钠
铜虫 (小有名气)
- 应助: 0 (幼儿园)
- 金币: 92.8
- 散金: 24
- 帖子: 247
- 在线: 84.8小时
- 虫号: 728481
- 注册: 2009-03-22
- 性别: GG
- 专业: 计算机应用技术

5楼2009-08-17 16:18:32
硫代硫酸钠
铜虫 (小有名气)
- 应助: 0 (幼儿园)
- 金币: 92.8
- 散金: 24
- 帖子: 247
- 在线: 84.8小时
- 虫号: 728481
- 注册: 2009-03-22
- 性别: GG
- 专业: 计算机应用技术
★
woshilsh(金币+1,VIP+0):期待尽快解决! 8-17 20:25
woshilsh(金币+1,VIP+0):期待尽快解决! 8-17 20:25
|
我原先想的也是这么做的,将类中的成员变量写成与类同名的结构体中的变量。 但是在处理其中的成员函数是就有点问题了。 (成员函数中是要引用成员变量的) 如果直接使用成员函数例如: struct Aria { static bool ourInited; static bool ourRunning; static bool ourSigHandleExitNotShutdown; static void init(SigHandleMethod,bool, bool); static void setDirectory(const char * directory); }; 会出现C++ 编译器可以通过 但是C编译器不能通过的问题。 因此使用了 函数指针 例如: struct Aria { static bool ourInited; static bool ourRunning; static bool ourSigHandleExitNotShutdown; static void (*init_point)(SigHandleMethod,bool, bool); static void (*setDirectory_point)(const char * directory); }; static void setDirectory(const char *directory) { ... } static void init(SigHandleMethod method, bool initSockets, bool sigHandleExitNotShutdown) { ... } 在main函数中实现地址赋值 int main(int argc, char **argv) { struct Aria aria; aria.init_point=&init; aria.setDirectory_point=&setDirectory; aria.init_point(SIGHANDLE_THREAD,true,true); return 0; } 但问题是在static void init(SigHandleMethod method, bool initSockets, bool sigHandleExitNotShutdown) 函数中会使用到Aria结构体中的成员变量static bool ourInited; static bool ourRunning; 不知道是不是可以直接使用,毕竟在结构体中直接声明的是函数指针static void (*init_point)(SigHandleMethod,bool, bool); 两者只是在main函数中才实现的赋值连接的。 有点罗嗦了 对不起啊! |

6楼2009-08-17 16:34:07
★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
wangen994(金币+2):欢迎常来
小木虫(金币+0.5):给个红包,谢谢回帖交流
wangen994(金币+2):欢迎常来
|
好大一圈弯路,其实用不着。 struct Aria { static bool ourInited; static bool ourRunning; static bool ourSigHandleExitNotShutdown; static void (*init_point)(SigHandleMethod,bool, bool); static void (*setDirectory_point)(const char * directory); }; 新标准不是很清楚了,不过这个static是否需要?这个是为了在对象构造前使用类变量使用的。函数也不用放在struct里面,即便用了函数指针,函数的实现也要放在一个地方吧。当然你说为了增加程序弹性我也没话说。 仅是建议,static的暂时用全局变量表示吧,以后根据工程情况慢慢修改其范围。所有的函数移出struct,如果函数调用了成员变量,那么就增加函数的参数。 c++改c不是那么好改的,虽然ls提供的思路没错,但毕竟是不同的两种编程思想...慢慢折腾吧,估计改好和重写一遍工作量差不多。 |
7楼2009-08-17 22:39:19

8楼2009-08-18 08:50:00
硫代硫酸钠
铜虫 (小有名气)
- 应助: 0 (幼儿园)
- 金币: 92.8
- 散金: 24
- 帖子: 247
- 在线: 84.8小时
- 虫号: 728481
- 注册: 2009-03-22
- 性别: GG
- 专业: 计算机应用技术

9楼2009-08-22 12:38:38

10楼2009-08-22 18:52:04













回复此楼