繁体   English   中英

C++ 自定义成员到成员“指针”/访问

[英]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#。

Microsoft 文档 - 属性 (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++/CLI 属性

想到的另一件事是属性,它是托管 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM