在技术总结之前,先上一波宏观经验。首先,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重(坎坷)。
在构造函数中用静态数据成员可以吗?实践证明是可以的。