VC中的“__declspec”能作什么(2)-为类增加属性

类别:编程语言 点击:0 评论:0 推荐:

?????? 属性,是面向对象程序设计中不可缺少的元素,广义的属性是用来描述一个对象所处于的状态。而我们这篇文章所说的属性是狭义的,指能用“=”操作符对类的一个数据进行get或set操作,而且能控制get和set的权限。
??????? 先看一下代码:

#include
#include
#include
#include
using namespace std;
?

class propertytest
{
?int m_xvalue;
?int m_yvalues[100];
?map m_zvalues;
public:
?__declspec(property(get=GetX, put=PutX)) int x;
?__declspec(property(get=GetY, put=PutY)) int y[];
?__declspec(property(get=GetZ, put=PutZ)) int z[];

?int GetX()
?{
??return m_xvalue;
?};
?void PutX(int x)
?{
??m_xvalue = x;
?};
?
?int GetY(int n)
?{
??return m_yvalues[n];
?};

?void PutY(int n,int y)
?{
??m_yvalues[n] = y;
?};

?string GetZ(string key)
?{
??return m_zvalues[key];
?};

?void PutZ(string key,string z)
?{
??m_zvalues[key] = z;
?};

};

int main(int argc, char* argv[])
{
?propertytest test;
?test.x = 3;
?test.y[3] = 4;
?test.z["aaa"] = "aaa";
?std::cout

本文地址:http://com.8s8s.com/it/it28536.htm