这个问题在这里已经有了答案:
Class variables: public access read-only, but private access read/write
(12 个回答)
2年前关闭。
通常我想创建可由类修改但不能由其他外部类修改的成员变量。我这样做的方法是将成员设为私有(private),然后创建一个公共(public)的 getter 函数。这似乎是额外的工作。有没有更简单的方法来做到这一点?
最佳答案
不,没有更简单的方法。抱歉...请记住,在 C++ 中,实现某个惯用语通常会花费一些时间并且可能会变得有些难看,但作为交换,您会得到更直接和优雅的使用。
您可以做的是为您的类的所有这些成员创建一个结构,然后至少不必为每个成员实现单独的 getter - 只需为返回 const&
的结构使用 getter .
另外(1):按照@JohnFilieau 的建议,给成员命名,比如myclass::foo_
并且 setter/getter 被命名为 myclass::foo()
,这并没有使实现更简单,但使使用更具可读性。
另外 (2): 你可以创建一个 mix-in这样一个成员(或多个成员,使用可变参数模板包)的模板,然后从它继承。当然,这可能会使您的构造和其他方法变得有些复杂。
关于c++ - 不创建 getter 的不可变成员变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60840529/