[英]C++ Custom Member to Member "Pointer" / Access
几年前我在谷歌上搜索时发现了一个简洁的功能。 它允许使用某种“函数”来控制对成员变量的访问,但我似乎再也找不到它了。 (我也不确定这是 C++ 功能还是仅特定于 msvc 编译器,因为它在 Visual Studio 中突出显示为红色,就好像它是标签或其他东西一样)
其背后的理论与此类似:
class A
{
public:
.test(int value)
{
priv = value;
}
private:
int priv = 0;
};
...
A a;
a.test = 14; // Sets priv to 14 ! note no () needed after test´
有人知道它是什么/曾经是什么吗?
谢谢大家的回应,但不,它不是像某些人拼命告诉我的那样 C#。
对于那些对其工作方式感兴趣的人:
struct S
{
int i;
void putprop(int j) {
i = j;
}
int getprop() {
return i;
}
__declspec(property(get = getprop, put = putprop)) int the_prop;
};
S s;
s.the_prop = 5;
int test = s.the_prop;
如果非要我推测的话,你很可能已经看到了 C99指定的初始值设定项
它看起来像这样:
MY_TYPE a = { .flag = true, .value = 123, .stuff = 0.456 };
这是一个只有C 的东西,在 C++ 中不存在。 已经接受了 C++20 的提案,包括对它们的有限支持: http : //www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0329r4.pdf
想到的另一件事是属性,它是托管 C++ 的一部分。
你会像那样使用它们(来源: https : //docs.microsoft.com/en-us/cpp/extensions/property-cpp-component-extensions?view=vs-2019 )
public ref class C {
int MyInt;
public:
// property data member
property String ^ Simple_Property;
// property block
property int Property_Block {
int get();
void set(int value) {
MyInt = value;
}
}
};
int C::Property_Block::get() {
return MyInt;
}
int main() {
C ^ MyC = gcnew C();
MyC->Simple_Property = "test";
Console::WriteLine(MyC->Simple_Property);
MyC->Property_Block = 21;
Console::WriteLine(MyC->Property_Block);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.