我有一个结构即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()
答案 0 :(得分:0)
您可能需要的是一个包含private
数据成员和protected
setter函数以及public
getter的类:
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 ++范围方面的任何内容。