据我所知,这似乎是不可能的直接方式.使const成员使每个人都成为const.我想有一个只读属性,但我想避免典型的"getter".我喜欢const public,mutable private.这在C++中是否可行?目前,我能想到的只是一些模板和技巧friend.我正在调查这个.
可能看起来像一个愚蠢的问题,但我之前对这里的答案感到惊讶.
一种可能的解决方案可以基于一个内部类,外部类是该内部类的友元,如下所示:
struct S {
template<typename T>
class Prop {
friend struct S;
T t;
void operator=(T val) { t = val; }
public:
operator const T &() const { return t; }
};
void f() {
prop = 42;
}
Prop<int> prop;
};
int main() {
S s;
int i = s.prop;
//s.prop = 0;
s.f();
return i, 0;
}
Run Code Online (Sandbox Code Playgroud)
如示例所示,类S可以从其成员函数中修改属性(请参阅 参考资料S::f)。另一方面,该属性不能以任何其他方式修改,但仍然可以通过返回对实际变量的 const 引用的给定运算符来读取。
| 归档时间: |
|
| 查看次数: |
140 次 |
| 最近记录: |