2017-12-05 14 views
0

개인적으로 속성을 설정하지만 소비자에게 속성을 가져 오는 기능 만 공개하는 방식으로 만들거나 디자인 할 수 있습니까?C++/CX 속성의 전용 setter는 무엇입니까?

저는 기본 클래스 래퍼를 구체적인 클래스 래퍼의 멤버로 지정하여 다중 상속 속성을 처리했습니다. 차라리 누군가가 기본 클래스 인스턴스를 자신의 속성 집합에 쓰는 것을 허용하지 않을 것입니다. 하지만 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!!! 

편집 :

I

답변

0

이 하나의 답 ... 그래도 알고 싶어한다 ... 바보, 내가 private 멤버에 액세스 할 수있어 왜 개인 setters arent 것

난 내 ConcreteClassWrapper 내 개인 회원에 액세스하고 거기에 기본 클래스를 설정해야합니다. 그런 다음 BaseClassWrapper 속성에서 set을 제거 할 수 있습니다.

0

당신은 시도해 봤어이 :

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

이것은 당신이 속성에서 개인 세터를 작성하는 방법입니다. C++/CX의 경우, property 키워드는 C++/CX 컴파일러가 C++ 코드를 생성 할 수있게하는 새로운 키워드 일 뿐이므로 private, public, protected와 같은 구문은 동일합니다.