开发平台(Platform): (Ex: Win10, Linux, ...)
win10
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
VC++
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
c++11
问题(Question):
我有两个class,分别是A和B
其中
class B {
public:
A a;
A b;
void save_info() {
a.save();
b.save();
}
}
void main() {
B obj_b;
....
obj_b.save_info();
}
如果我要多一个c
class B {
public:
A a;
A b;
A c;
void save_info() {
a.save();
b.save();
c.save();
}
}
如果我想新增d/e/f/...
势必就要改code
想说有没有办法比较聪明的方法修改save_info
目前想到简单的做法是
1. 把a/b/c/d/.. 改成array,同时定义长度等等
然后save_info()里面改成for-loop
不过因为a/b/c/d/.. 实际上是有意义的名称
这部分想像上就是要自己另外去修改enum,把index转成有意义的名称
这让这样呼叫时候就会变成
enum { A_CAR, A_CAT, A_CANADA, A_NUM }
class B {
public:
A A_arr[A_NUM];
void save_info() {
for (int i = 0; i < A_NUM; A++)
A_arr[i].save_info();
}
}
使用时
obj_b.A_arr[A_CAR].func();
2. 另外想法是
a/b/c/d内存使用应该是固定且相同的,
是不是有可能利用指标来自动扫位置并执行??
3. 程式执行前,自动执行另一个小程式
扫描B.h来自动修改B.cpp,不过这感觉很多问题
且 save_info()可以能要另外放在一个档案比较好修改
想问问有没有其他做法?