2017-11-27 11 views
-2

私は構造体、すなわちTStreamを持っています。それにはゲッターでアクセスされる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++スコープの側面については何も変更しません。

関連する問題