45fan.com - 路饭网

搜索: 您的位置主页 > 网络频道 > 阅读资讯:如何使用C++中的property库?

如何使用C++中的property库?

2016-08-28 19:58:08 来源:www.45fan.com 【

如何使用C++中的property库?

由于代码还没有整理,大量的特化和偏特化散乱在代码里,所以我就暂时不发布源码了,不过这是迟早的事情,呵呵。先来说说怎么用吧,个人觉得还是蛮有意思的。

以下是可读写属性的声明方法:
如何使用C++中的property库?#include<rdx/property.h>
如何使用C++中的property库?
如何使用C++中的property库?
classTestProperty
如何使用C++中的property库?如何使用C++中的property库?
{
如何使用C++中的property库?typedefTestPropertyMyType;
如何使用C++中的property库?
如何使用C++中的property库?
public:
如何使用C++中的property库?
intset_X(intvalue)
如何使用C++中的property库?如何使用C++中的property库?
{
如何使用C++中的property库?
returnrdxLib::put(X,value*2);//为X设置新的值,
如何使用C++中的property库?}

如何使用C++中的property库?
如何使用C++中的property库?
public:
如何使用C++中的property库?rdxLib::property_bag
<MyType,int,read_write>X;
如何使用C++中的property库?
如何使用C++中的property库?TestProperty()
如何使用C++中的property库?:X(
&MyType::X,&MyType::set_X)
如何使用C++中的property库?如何使用C++中的property库?
{
如何使用C++中的property库?}

如何使用C++中的property库?}
;
如何使用C++中的property库?

用法是:
如何使用C++中的property库?intmain()
如何使用C++中的property库?如何使用C++中的property库?
{
如何使用C++中的property库?TestPropertyprop;
如何使用C++中的property库?prop.X
=12;
如何使用C++中的property库?std::cout
<<prop.X<<std::endl;//shouldbe24.
如何使用C++中的property库?intcalculate=2*prop.X+6-prop.X;
如何使用C++中的property库?std::cout
<<calculate<<std::endl;//shouldbe30.
如何使用C++中的property库?prop.X+=22;
如何使用C++中的property库?std::cout
<<prop.X<<std::endl;//shouldbe68.
如何使用C++中的property库?
如何使用C++中的property库?return0;
如何使用C++中的property库?}

这里注意到几点:
1. 对于可读写的属性,我直接把属性值就存在X当中,它既是接口又是容器,用这种方法实现了默认的get和set函数。如果没有必要,就可以根本不写get和set,使这个属性自动的退化成一个public成员。
2. 对于X的用法,可以把它完全当作一个简单的int来用,完全感觉不到它和普通int的区别。

还有一个好消息,如果在类的声明里面将int都改成一个类,比如std::string,那么在使用的时候,X就和普通的std::string一个样,代码如下:
如何使用C++中的property库?#include<string>
如何使用C++中的property库?#include<rdx/property.h>
如何使用C++中的property库?
如何使用C++中的property库?
classTestProperty
如何使用C++中的property库?如何使用C++中的property库?
{
如何使用C++中的property库?typedefTestPropertyMyType;
如何使用C++中的property库?
如何使用C++中的property库?
public:
如何使用C++中的property库?std::
string&set_Name(conststd::string&value)
如何使用C++中的property库?如何使用C++中的property库?
{
如何使用C++中的property库?
returnrdxLib::put(Name,value+"ab");//SetadifferentvalueforName.
如何使用C++中的property库?}

如何使用C++中的property库?
如何使用C++中的property库?
public:
如何使用C++中的property库?rdxLib::property_bag
<MyType,std::string,read_write>Name;
如何使用C++中的property库?
如何使用C++中的property库?TestProperty()
如何使用C++中的property库?:Name(
&MyType::Name,&MyType::set_Name)
如何使用C++中的property库?如何使用C++中的property库?
{
如何使用C++中的property库?}

如何使用C++中的property库?}
;
如何使用C++中的property库?
如何使用C++中的property库?
intmain()
如何使用C++中的property库?如何使用C++中的property库?
{
如何使用C++中的property库?TestPropertyprop;
如何使用C++中的property库?prop.Name
="Hello";
如何使用C++中的property库?std::
stringstr="_test_";
如何使用C++中的property库?std::cout
<<prop.Name<<std::endl;//shouldbe"Helloab"
如何使用C++中的property库?prop.Name+=str+prop.Name;
如何使用C++中的property库?std::cout
<<prop.Name<<std::endl;//shouldbe"Helloab_test_Helloabab"
如何使用C++中的property库?std::cout<<prop.Name->size()<<std::endl;//shouldbe22.
如何使用C++中的property库?
如何使用C++中的property库?return0;
如何使用C++中的property库?}

请注意,我可以写prop.Name->size()这样的代码,同时也可以调用std::string中的所有const的公共成员和方法,真的就和普通std::string没区别了。原因呢,是因为property_bag从std::string派生,并且没有添加任何多余的公有成员或方法。

至于readonly和writeonly属性,就有一些不同了,因为这些属性注定不能直接存储在property_bag对象里面,property_bag就退化成纯粹的接口。此时,如果Name是一个readonly的property,那么依然可以调用std::string所有const的公共成员和方法,这个和read_write的property一样。
这种readonly和writeonly属性声明方法如下:
如何使用C++中的property库?#include<string>
如何使用C++中的property库?#include<rdx/property.h>
如何使用C++中的property库?
如何使用C++中的property库?
classTestProperty
如何使用C++中的property库?如何使用C++中的property库?
{
如何使用C++中的property库?typedefTestPropertyMyType;
如何使用C++中的property库?
如何使用C++中的property库?
intx_;
如何使用C++中的property库?std::
stringname_;
如何使用C++中的property库?
如何使用C++中的property库?
public:
如何使用C++中的property库?
intget_X()const
如何使用C++中的property库?如何使用C++中的property库?{
如何使用C++中的property库?
returnx_;
如何使用C++中的property库?}

如何使用C++中的property库?
如何使用C++中的property库?std::
string&set_Name(conststd::string&value)
如何使用C++中的property库?如何使用C++中的property库?
{
如何使用C++中的property库?name_
=value;
如何使用C++中的property库?
returnname_;
如何使用C++中的property库?}

如何使用C++中的property库?
如何使用C++中的property库?
public:
如何使用C++中的property库?rdxLib::property_bag
<MyType,int,readonly>X
如何使用C++中的property库?rdxLib::property_bag
<MyType,std::string,writeonly>Name;
如何使用C++中的property库?
如何使用C++中的property库?TestProperty()
如何使用C++中的property库?:X(
&MyType::X,&MyType::get_X)
如何使用C++中的property库?,Name(
&MyType::Name,&MyType::set_Name)
如何使用C++中的property库?如何使用C++中的property库?
{
如何使用C++中的property库?}

如何使用C++中的property库?}
;

如果在代码里面尝试给X赋值或读取Name,都会得到编译期间错误。

OK,这就是这个rdxLib.property的overview了。
 

本文地址:http://www.45fan.com/a/question/69025.html
Tags: 中的 C++ Property
编辑:路饭网
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部