将宏用于无参数的功能

Using macros for function without parameters

本文关键字:功能 参数 用于      更新时间:2023-10-16

我有一个结构,即tstream。它有2个受保护的成员,可以使用Getters访问。

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()

您可能想要的是一个具有private数据成员和protected Setter功能的类,public Geters:

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 范围的方面。