c_cpp C ++属性
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp C ++属性相关的知识,希望对你有一定的参考价值。
template<typename T, typename P, void (P::*set_handler)(T data), T (P::*get_handler)()> class property
{
private:
P &parent;
public:
property(P &parent) : parent(parent) { }
void operator=(T data)
{
(parent.*set_handler)(data);
}
operator T()
{
return (parent.*get_handler)();
}
};
template<typename T, typename P, T (P::*get_handler)()> class property_get
{
private:
T &data;
P &parent;
public:
property_get(P &parent, T &data) : parent(parent), data(data) { }
void operator=(T data)
{
this->data = data;
}
operator T()
{
return (parent.*get_handler)();
}
};
template<typename T, typename P, T (P::*get_handler)()> class property_only_get
{
private:
P &parent;
public:
property_only_get(P &parent) : parent(parent) { }
operator T()
{
return (parent.*get_handler)();
}
};
template<typename T, typename P, void (P::*set_handler)(T data)> class property_set
{
private:
T &data;
P &parent;
public:
property_set(P &parent, T &data) : parent(parent), data(data) { }
void operator=(T data)
{
(parent.*set_handler)(data);
}
operator T()
{
return data;
}
};
class my_class
{
private:
unsigned int m_int;
void on_set(unsigned int data)
{
m_int = data - 1;
}
unsigned int on_get()
{
return m_int * m_int;
}
public:
property<unsigned int, my_class, &my_class::on_set, &my_class::on_get> my_int;
my_class() : my_int(*this) { }
};
unsigned int __cdecl main()
{
//my_class mc;
//unsigned int tmp;
//mc.my_int = tmp;
//return mc.my_int;
int acc;
return acc > 0;
}
以上是关于c_cpp C ++属性的主要内容,如果未能解决你的问题,请参考以下文章
c_cpp 使用OpInput从其他输入获取属性
c_cpp 将根TF1转换为xml属性字符串
c_cpp 进度条的一个漂亮的小可自定义视图,具有可选的动画属性
C/C++实现Perigram属性
VS里的VC++属性和C/C++属性有什么区别?
C/C++ HDF5 读取字符串属性