工程实践2

本文是作者的C++工程实践心得,涵盖了多文件结构下静态成员的使用问题,包括静态成员函数和数据成员的声明与初始化。文章还探讨了C++与Java在资源类实现、继承与多态、角色工厂类等方面的区别,并分享了在项目中遇到的错误及解决方案。此外,还提到了键盘和鼠标信息处理、FPS控制以及头文件互相包含问题的处理。
摘要由CSDN通过智能技术生成

在技术总结之前,先上一波宏观经验。首先,Java和C++还是在很多细节性的地方区别蛮大的(JAVA果然是阉割了的C++)。其次,项目安排一定要分清阶段任务,就像最短路径问题。分清任务次序很重要。分清哪些是基础功能哪些是优化功能,基础功能就是必须实现的,哪怕效率不高等等问题,但必须安排在优化功能之前实现。OK!技术经验捧上!
1、多文件结构使用静态成员的麻烦。具体到工程实践2里,就是静态调用背景绘制函数(easyX图形库)失败。遇如下报错:

error LNK2001: Cannot resolve the external command "public: static
class IMAGE R::mag1" (?mag1@R@@2VIMAGE@@A)

这里的错误在于,静态变量没有在类外定义,这里的类外指.cpp文件。因为在静态数据成员的特殊性,必须类内类外声明两次。类内的声明就是纯粹的声明,而类外的定义是为了分配给静态变量内存和初始值。总之,二者缺一则报错;但是,当类型为const static时的整形时可以在类体内进行初始化。
静态成员函数和静态数据成员在类外定义和初始化时都不用再加static 了,使用类名限定就好了。否则红线报错如下:

 Error:此处不能指定存储类

而且,实践证明,可以跳过初始化,也就是说不一定要赋初值。毕竟图形的初始用法不是简单的赋值语句。

有趣的类R(角色类),经历3重(坎坷)。
在构造函数中用静态数据成员可以吗?实践证明是可以的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值