自从离开学校就基本上不再使用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++编程语言在构建后台服务时的配置管理和最佳实践。 首先,我们来讨论C++语言。C++是一种强大的、面向对象的编程语言,被广泛用于开发系统软件、游戏引擎、...
在C++编程中,处理配置文件通常是为了存储和读取应用程序的设置或用户偏好。ini文件是一种常见的配置文件格式,其结构简单,易于理解和操作。...只需根据具体需求进行适当的修改,就可以满足不同项目的配置管理需求。
Visual C++ 2010 是一个流行的开发环境,支持C++语言,提供了丰富的工具来帮助开发者管理项目和代码。本篇文章将深入探讨在Visual C++ 2010环境下,如何使用纯C++代码实现配置文件的读取与写入。 1. 文件I/O基础 在...
以下是关于VSCode与C++配置的相关知识点: 1. **VSCode安装与启动**: - 首先,你需要从微软官方网站下载适用于你操作系统的VSCode安装包,并按照提示完成安装。 - 安装完成后,启动VSCode,首次打开会引导你进行...
C++仓库管理系统源码是一个基于C++编程语言实现的软件应用,主要用于管理和跟踪仓库中的物品库存、出入库操作以及相关的管理活动。这个系统的核心目标是提高仓库运营效率,确保库存数据的准确性和实时性,同时简化...
`tasks.json`文件则管理构建任务,比如编译和链接C++项目。在这个配置下,任务可能被设置为调用MinGW的g++编译器,传递合适的编译选项,如-Wall(显示所有警告)和-Werror(将警告视为错误)。它还可以包含构建目标...
标题中的"dev-c++配置文件"指的是Dev-C++的配置设置,这是一款开源的C/C++集成开发环境,尤其适合初学者使用。Dev-C++包含了GCC编译器,提供了友好的用户界面,允许用户编写、编译、调试C和C++程序。 在描述中提到...
在C++编程中,读取配置...通过上述方法,你可以有效地在C++程序中读取和解析TXT格式的配置文件,灵活地管理应用程序的行为。在实际项目中,可能还会使用第三方库,如Boost或TinyXML,以支持更复杂的配置格式和功能。
在IT领域,设备管理器是操作系统中的一个核心组件,它负责监控、配置和解决与硬件设备相关的问题。本文将深入探讨使用C++编程语言构建一个类似系统设备管理器的实现,以及这一过程中涉及的关键知识点。 首先,C++是...
《C++工资管理系统源代码详解》 在信息技术领域,开发一个有效的工资管理系统是企业运营中的重要环节。本文将深入解析一款基于Visual C++的工资管理系统源代码,旨在为程序员提供学习与参考的宝贵资料。 首先,...
在C++编程中,文件配置类通常用于管理应用程序的设置和参数,使程序可以根据不同的配置文件进行动态调整。本文将详细介绍一个通用的C++文件配置类的设计与实现,以及如何利用此类来处理配置文件。 首先,这个通用的...
《固定资产管理系统+配置视频(C++)》是一个基于C++编程语言开发的管理软件,用于高效、精确地管理和追踪组织的固定资产。此系统不仅包含了完整的源代码,还附带了一个配置视频,帮助用户理解如何正确地设置和运行...
总的来说,C++操作配置文件是一项基础但关键的任务,封装好的类库可以帮助我们更有效地管理应用程序的配置,提高开发效率,并确保配置数据的正确性和一致性。这个资源提供的C++类可能是一个实用的工具,对于需要处理...
在这个“C++设备管理代码”压缩包中,我们可以期待找到用C++编写的设备驱动程序和其他与设备交互的代码。设备管理的主要目标是确保系统能正确识别、配置、控制和优化硬件资源。 设备管理的几个关键概念包括: 1. *...
《C++高校人事管理系统源码解析》 C++是一种强大且高效的编程语言,常用于开发复杂的软件系统,尤其是在教育、科研以及企业管理等领域。本篇将深入解析一款基于C++编写的高校人事管理系统,探讨其核心设计理念和...
1. **配置中心**:Apollo作为配置中心,存储了所有应用的配置信息,支持多环境、多集群的配置管理,使得配置的更新和分发变得简单。 2. **实时推送**:当配置发生变更时,Apollo服务端会将更新推送到各个客户端,...
C++的`fstream`库提供了读写文件的功能,可以用来保存教室和课程的配置,或者用户的预订记录。 7. **面向对象设计原则**:遵循SOLID原则(单一职责原则、开放封闭原则、里氏替换原则、接口隔离原则、依赖倒置原则)...
下面将详细讨论配置文件在C++程序中的应用、常见的配置文件格式以及如何在C++中读取和处理这些配置文件。 1. **配置文件的作用**:配置文件通常包含一系列的键值对,用于设定程序的运行参数、连接信息、行为模式等...
源码: wsdConfigMgr.h wsdConfigMgr.cpp 另附配置文件例子: config.ini <br>感觉C/C++管理配置文件与参数不如Java那样自在,于是自己写了这么一个东西。如有高人,请不吝赐教!