发布于 2010-11-19 20:46:03
在.NET中,属性是在幕后发出的实际get
和set
函数的语法糖(实际上,它们不仅仅是语法糖,因为属性是在生成的IL中发出的,并且可以与反射一起使用)。因此,在C++中,您需要显式地编写这些函数,因为没有属性这样的概念。
发布于 2010-11-19 20:48:42
.NET中的属性与get
和/或set
成员函数相关联,因此它实际上只是语法糖。使用C++最接近的方法是使用重载来赋予getter和setter相同的名称:
const std::string &test() const { return text_; }
void test(const std::string &value) { text_ = value; }
显然,您仍然需要为调用提供括号:
someThing.text("blah");
String blah = someThing.text();
发布于 2010-11-19 21:49:27
是的,但这是特定于供应商的。微软有declspec(属性)。C++Builder的实现更高级一些(通过特定于供应商的__property关键字),因为您可以有索引访问器(可以是您希望的任何类型)。
还要检查一下(不依赖于特定于供应商的关键字):http://www.codeproject.com/KB/cpp/cpp_property_indexer.aspx
https://stackoverflow.com/questions/4225087
复制相似问题