开发平台(Platform): (Ex: Win10, Linux, ...)
WIN10 / LINUX
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
VC2015 / gcc
问题(Question):
想要用C++来跑模拟
目前是将参数的部分定义在一个class/structure类似header的概念
其中部分参数希望拿来当静态配置变量的array长度
问题在于,GCC虽然支援静态配置长度是给变量,然而VC比较严谨
还不允许这种写法,一定要是定值
目前做法就是用define的方式
使用class/structure 来管理 系统变量的原因
1. 让变量找的到哪里宣告的(当IDE不够强的时候)
(补充,某些因素,在linux环境下IDE不怎么好用)
2. 可以加上const保证这些变量都不会被其他function修改。
目前是所有参数都是public
但是现在希望让变量整理再一起,有一个统一的规范
现在是将起始值放在建构子里
问题是,希望让VC能直接吃class的变量的长度又不使用动态配置
因为静态配置的优点是可以直接用sizeof(class)计算长度,
然后用指令直接写入档案之类的存起来,而不用对里面所有变量个别处理
也是希望类似
class A{
const int abc;
A(){
abc = 10;
}
}
然后让整个 class A都无法更动。
网络上看到的方法貌似是宣告同时给值
class A{ .abc = 10};
然而如果变量超多就会看起来很长
原本用structure的目的是为了让每个变量能够知道原本放在哪
同时利用传入变量时加上const使之只能读不能改
想到另一种解法是宣告在namesapce里面
然后所有的变量都加上const
用structure的优点是,如果要两个模拟环境,可以宣告两个,不过目前没有这样需求
用namespace是 可以加上const外,也可以让变量找的到宣告的地方
(补充说明,目前的环境没办法利用tool帮忙找使用的变量原本宣告在哪)
为了一致性,structure还能有别种作法吗?
因为使用namespace,如果要将变量储存就必须对每个变量个别处理,
如果是使用structure要储存,因为sizeof()的关系,可以一行就存起来