C ++ / CX属性中的私有setter是一个东西吗?

时间:2017-12-05 13:59:28

标签: visual-c++ windows-runtime c++-cx

是否可以以私有方式设置属性的方式创建/设计,但只暴露将属性提供给消费者的能力?

我通过使基类包装器成为具体类包装器的成员来解决多重继承属性。我宁愿不允许某人在其自己的属性集中写入基类实例。但我似乎无法排除set并设置基本属性,而我无法将set设为私有。

有什么想法吗?

代码:

ConcreteClassWrapper(); // here I want to setup base class, i.e. give it a pointer to the actual C++ model I'm working with.

property BaseClassWrapper^ BaseClass 
{
    BaseClassWrapper^ get() { return baseClass; }

    // I want to avoid giving my consumers the ability to set this property.
    void set(BaseClassWrapper^ value) { baseClass= value; }
}

private:
    BaseClassWrapper^ baseClass; // Having a base class wrapper makes it easier on code writing.. i.e. I don't need to implement interfaces. I just want to use my C++ code in C# Microsoft GOD!!!

编辑:

我是个白痴,我可以访问私人会员......

2 个答案:

答案 0 :(得分:0)

这只是一个答案......仍然想知道私人制定者为什么不这样做?一件事

我只需要访问我的ConcreteClassWrapper的私有成员并在那里设置基类。然后,我可以移除set属性中的BaseClassWrapper

答案 1 :(得分:0)

你试过这个:

property BaseClassWrapper^ BaseClass 
{
    BaseClassWrapper^ get() { return baseClass; }
    private:
      void set(BaseClassWrapper^ value) { baseClass= value; }
}

这是您在属性中编写私有setter的方式。对于C ++ / CX,property关键字只是一个新的关键字,允许C ++ / CX编译器生成一些C ++代码,因此private,public,protected之类的语法是相同的。