2017-11-27 2 views
-2

구조체 즉 TStream이 있습니다. 여기에는 getter로 액세스 할 수있는 2 개의 보호 된 멤버가 있습니다.매개 변수없이 함수에 매크로 사용

struct TStream { 
protected: 
    long long size, position; 
    FILE *f; 
public: 
    ... 
    long long Get_Size(void) { 
     return size; 
    } 

    long long Get_Pos(void) { 
     return position; 
    } 
} TStream; 

매크로로 Get_Size() 및 Get_Pos() 사용을 바꿀 수 있습니까?

#define Size Get_Size() 
#define Position Get_Pos() 
+0

설명은 확장 토론이 아닙니다. 이 대화는 [채팅으로 이동되었습니다] (http://chat.stackoverflow.com/rooms/159924/discussion-on-question-by-mian-bilawal-using-macros-for-function-without-paramet). – Andy

답변

0

당신이 아마 여기에 원하는 것은 private 데이터 멤버와 protected 세터 기능과 public 게터와 클래스 :

class TStream { 
    long long size, position; 
    FILE *f; 
protected: 
    void Set_Size(long long value) { 
     size = value; 
    } 
    void Set_Pos(long long value) { 
     position = value; 
    } 
public: 
    // ... 
    long long Get_Size(void) const { 
     return size; 
    } 

    long long Get_Pos(void) const { 
     return position; 
    } 
}; 

는 이러한 클래스 만이/직접 TStream에서 상속 구조체가 private 구성원을 변경할 수 있지만, 값은 여전히 ​​public 범위에서 액세스 할 수 있습니다.

매크로는 이러한 C++ 범위 지정 측면에 대해 아무 것도 변경하지 않습니다.

관련 문제