【发布时间】:2011-11-26 19:33:14
【问题描述】:
我有一个 C++ 功能的想法,我想知道是否可以创建。
假设我希望“MyClass”中的私有变量只能由公共 getter 和 setter 这两个函数访问。也就是说,如果 MyClass 的另一个公共或私有函数试图获取或更改我的超级私有变量的值,我将得到一个编译错误。但是,getter 和 setter 行为正常。
有什么想法吗?
编辑 1:一个用例是让 getter/setter 执行错误检查或其他形式的逻辑。我什至不希望类本身直接接触变量。
编辑 2: 然后是这样的:
template <class T>
class State{
private:
T state;
public:
State()
{
state = 0;
}
T getState()
{
return state;
}
void setState(T state)
{
this->state = state;
}
};
然后任何类都可以继承它并只能通过 getter/setter 访问“状态”。当然,如果不根据你想要的逻辑修改 getter 和 setter,这个类是没有用的。
【问题讨论】:
-
你能提供一个用例吗?
-
所以你可能做错了设计:如果该字段除了在类中被访问和存储之外没有更多的事情要做,那么它还不如在另一个类中。
-
据我所知这是不可能的,尽管当你有与你的 getter/setter 相关联的逻辑时它会非常好。我一直只是试图记住使用 getter/setter,因为大多数时候你将成为类所有者。
-
我觉得有必要创建一种语言来包含“超级隐私”这一令人敬畏的概念。它还将以“超级宣传”为特色。现在我只需要发明“Spidy Sense”编程范式。
-
@mikerobi 确保您还包括“任何宣传都是好的宣传”功能。