c++ - 不创建 getter 的不可变成员变量?

标签 c++ idioms

这个问题在这里已经有了答案:





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/

相关文章:

c++ - 以下代码的问题是什么?

methods - 获取 Pharo 中所有已安装方法的正确方法

python - 2 和问题 : given an unsorted list of ints, 查找两个元素的总和是否等于给定目标。如何让我的代码更 Pythonic?

c++ - C++ 编译器(或链接器?)如何知道如何处理 cpp 和头文件?

c++ - 读取和写入缓冲区

rust - 计数选项集合中出现次数的惯用方式

java - Java 1.6 中清理资源的首选方法

for 循环上的 Clojure NullPointerException

c++ - 未使用的成员变量是否占用内存?

c++ - 我在使用 find_last_of 时遇到问题