C++ 如何支持属性
属性,是面向对象程序设计中不可缺少的元素,广义的属性是用来描述一个对象所处于的状态。而我们这篇文章所说的属性是狭义的,指能用“=”操作符对类的一个数据进行get或set操作,而且能控制get和set的权限。
先看一下代码:
#include <IOSTREAM>
#include <map>
#include <string>
#include <CONIO.H>
using namespace std;
class propertytest
{
int m_xvalue;
int m_yvalues[100];
map<string,string> 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[]; //应该是string 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 << test.x <<std::endl;
std::cout << test.y[3] <<std::endl;
std::cout << test.z["aaa"] <<std::endl;
getch();
return 0;
}
Reference:
http://blog.csdn.net/wqf2/archive/2004/08/20/79977.aspx