c++中自动提供getter和setter函数的基类
A base class to automatically provide getter and setter functions C++
我的用例是这样的。
-
我有一些普通的字段,需要一个基本的线程安全的getter和setter。
-
对于某些字段需要自定义getter和setter
解决这个问题的最好方法是什么?
标准库为简单的线程安全获取和设置值提供了atomic
。http://en.cppreference.com/w/cpp/atomic/atomic
请注意,适当的线程安全几乎总是涉及到的不仅仅是在std::atomic
中包装几个成员并结束它。
直接回答这个问题,我认为没有一个唯一的好的答案。
不像c#, c++似乎没有自动生成get
, set
内置到语言中,虽然可能有一个复杂的方式来做这个"有机"(模板,也许?);您可能遇到的任何解决方案都可能最终成为内置在IDE或实用程序中的某种工具,例如Eclipse或Code::Blocks。
另外,c++的c++ 03通常不是线程安全的;对多线程、线程管理、异步和内存安全的支持在后来的版本(c++ 11及以后的版本)中增加了,但由于c++的本质,我不相信c++将永远是固有的线程安全的(至少现在是这样)。
虽然std::atomic<type whatever>
可能是一个可行的选择,但您可能还需要记住,它实际上是该语言的"附加组件",并且会产生时间成本,就像大多数其他多线程结构一样(甚至处理器级别的原子操作都要慢一些)。您可以走互斥锁的路线,但是,我们要进入多线程领域,这可能超出了您的问题范围。
相关文章:
- C++中大多数/所有 setter 函数的参数是否应该写为常量引用?
- 我们可以有一个 setter 成员函数作为从 const 对象引用的 const 吗?
- 如果构造函数和析构函数可以获取和显示(打印)数据,为什么我们需要 getter 和 setter?
- 没有默认构造函数的对象成员的 wig setter
- C++ - 调用 setter 的函数 - 如何装饰参数
- 将set函数(setter)标记为constexpr的目的是什么
- 当我们有用于设置值的 setter 时,为什么我们使用参数化构造函数
- 构造函数应该接受参数还是应该创建setter
- 如何为指针类变量执行 setter 和 getter 函数
- C++ 中 getter setter 和构造函数之间的视觉差异
- 函数的 setter/Getter 在调用函数时将函数转换为字符串
- 我应该总是在“sink”构造函数或setter参数上移动
- 如何使用构造函数来代替setter成员函数
- 这是更有效的Qt:构造函数与参数或默认构造函数与setter之后
- c++ 11 Setter函数参数传递nullptr
- 在一个函数中使用有效的 setter 进行更改会在另一个函数中重置回其旧状态
- const或ref或const ref或value作为setter函数的参数
- 如何重新定义Qt Creator创建getter和setter函数的方式
- C++将长字符串传递给构造函数或setter
- c++中自动提供getter和setter函数的基类