自从离开学校就基本上不再使用C++了,最近却又因为项目上的原因重新走入这一迷失的世界, 感觉很是缺乏一些顺手的工具。首先就是做配置管理有点麻烦, 因为缺乏反射机制, 无法直接映射, 所以一般需要手工书写配置设置功能.
我们希望配置类在配置阶段能够支持动态属性名,
<!----> GConfig cfg;
cfg.set(
"
bgColor.b
"
,
3.0
);
cfg.set(
"
lightEnabled
"
,
false
);
t_float b
=
cfg.get(
"
bgColor.b
"
);
bool l
=
cfg.get(
"
lightEnabled
"
);
但是内部使用时支持直接的属性访问,便于编译器检查, 也提高运算速度。
<!----> t_float b
=
cfg.bgColor.b;
bool l
=
cfg.lightEnabled;
所幸C++的类型系统能够偷偷的去干很多见不得人的勾当,因此便有了下面这个简易机制。
<!---->#define S_P(x)
do
{
if
(strcmp(name,#x)
==
0
) { x
=
value;
return
; } }
while
(
0
)
#define G_P(x)
do
{
if
(strcmp(name,#x)
==
0
) { value
=
x;
return
; } }
while
(
0
)
class
_GConfig{
public
:
bool lightEnabled;
t_float minX;
t_float maxX;
t_float minY;
t_float maxY;
_GConfig(){
//
initialize all primitive members
memset(
this
,
0
,sizeof(_GConfig));
}
};
class
GConfig:
public
_GConfig{
public
:
GColor bgColor;
GConfig(){
}
_variant_t get(
const
char
*
name){
_variant_t value;
get(name,value);
return
value;
}
void
get(
const
char
*
name,_variant_t
&
value){
G_P(lightEnabled);
G_P(minX);
G_P(maxX);
G_P(minY);
G_P(maxY);
G_P(bgColor.r);
G_P(bgColor.g);
G_P(bgColor.b);
G_P(bgColor.a);
}
void
set(
const
char
*
name, _variant_t value){
S_P(lightEnabled);
S_P(minX);
S_P(maxX);
S_P(minY);
S_P(maxY);
S_P(bgColor.r);
S_P(bgColor.g);
S_P(bgColor.b);
S_P(bgColor.a);
}
};
_variant_t是VC++在<comdef.h>中提供的对变体数据类型的封装。使用S_P和G_P这样的宏可以由编译器检查变量名的正确性。
分享到:
相关推荐
优秀的代码,标准的代码规范,使我们的服务更加的一流,更加的完美的配置文件
配置表加载,修改的C++程序,便于资源管理
C++开发基于Qt与MySQL的图书管理系统源码+sql数据库+配置方法.zip C++开发基于Qt与MySQL的图书管理系统源码+sql数据库+配置方法.zip C++开发基于Qt与MySQL的图书管理系统源码+sql数据库+配置方法.zip 该项目是个人...
绝对可以运行 另外里面还有个配置视频 看着做就知道了。由于上传权限限制,功能演示的视频就不放上去了,会配置就好。
C++ 人事 工资管理系统 Access Access数据库,运行或测试前请先配置好ODBC数据源,密码说明文件里有,在VC6.0下可以编译,不过有少许错误,不影响编译。它可完成员工资料添加、工资自动核算、系统设置等功能。
源码: wsdConfigMgr.h wsdConfigMgr.cpp 另附配置文件例子: config.ini <br>感觉C/C++管理配置文件与参数不如Java那样自在,于是自己写了这么一个东西。如有高人,请不吝赐教!
银行账户管理系统,分为客户模式和管理员模式 可实现模拟ATM机的功能,和管理员的账户管理,日志查看等 此为校内优秀毕业设计,含论文、PPT、演示程序 演示程序的用法及环境配置请访问:www.worldofbeside.com
学生管理系统需要配置ODBC。 4、附加数据库 (1)将实例目录“database”文件夹下扩展名为“.MDF”和“.LDF”的两个文件拷贝到SQL Server 2000安装路径下的“MSSQL”/“Data”目录下。 (2)打开SQL Server 2000中的...
基于C++ MFC 开发的餐饮管理系统,包含完整项目源码,可用VC6.0或VS打开,打开即可直接运行或修改,无需其他环境配置,源码包含相关注释,适合初学MFC的童鞋学习之用。 数据库用的是ACCESS 2000。
图书管理系统 c++ 数据库。里面有详细的uml建模实现(需求分析),以及数据库的配置(包括sql语句应写好了直接执行就行了。数据库可以不必是sq server 2000,其他的也行,应经试过了)。注释很详细。
QT&C++ 学生成绩管理系统 ,无需配置环境,有安装包,适合快速理解.zip 毕业设计 课程设计 系统设计 系统开发 程序开发 C++ QT 源代码毕业设计 课程设计 系统设计 系统开发 程序开发 C++ QT 源代码毕业设计 课程...
商品销售管理系统属于小型的进销存管理系统,主要由基础信息管理、入库管理、销售管理、查询管理、往来帐管理和系统管理6个功能模块构成。 基础信息管理模块 在基础信息管理模块中需要实现操作员信息、商品信息、...
同时,Lua便于嵌入C/C++程序,而且编译执行速度非常快,可以说是目前解决C/C++程序配置管理问题的一个出色方案。 9、密码及安全:OpenSSL 安全是今天进行C/C++编程无法回避和必须重视的问题。然而编写安全的应用...
//除了基本设计要求,我们有意识的引入例如背景音乐,渐变颜色,动画,透明度,为窗口以及按钮增加背景图片,通过配置参数设计字体在按钮中的居中显示,将按钮设计为圆角,设计可以拖动的页面,在tablewidget里面...
C++ Builder写的工作日志管理软件及源码,使用MSSQL数据库。 还原数据库修改INI配置文件即可运行。
HART PC机配置管理软件,Visual C++环境下开发,仅供参考。
项目共包含22个文件,其中编译后的目标文件o 6个,C++源代码文件cpp 5个,C++头文件h 5个,Markdown文档文件md 2个,Windows配置文件win 1个,开发者配置文件dev 1个,以及可执行文件exe 1个,布局文件layout 1个。...
5、本程序主要功能为用户管理,乃图书馆管理系统中的一部分,后续会不断上传该系统的其他部分源码,欢迎关注。 6、本程序的开发语言及框架为:C++、MFC。 7、本程序是N年前开发的,受限于本人当时的技术能力,难免会...
vscode配置c/c 环境 步骤1:安装VSCode 首先,你需要在你的电脑上安装VSCode。你可以从VSCode的官方网站下载并安装。 步骤2:安装C/C++扩展 在VSCode中,打开扩展视图(通过点击左侧边栏上的方块图标或者按下Ctrl...
C++大作业之学生选课系统 ###1、开发环境配置:(Visual Studio 2013) 配置教程:传送门 数据库建表:运行仓库中的course_choice.sql,将自行建表。 ###2、已完成部分: 学生、教师、管理员的登录。 查看课程安排...