c++中自动提供getter和setter函数的基类

A base class to automatically provide getter and setter functions C++

本文关键字:setter 函数 基类 getter c++      更新时间:2023-10-16

我的用例是这样的。

  1. 我有一些普通的字段,需要一个基本的线程安全的getter和setter。

  2. 对于某些字段需要自定义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>可能是一个可行的选择,但您可能还需要记住,它实际上是该语言的"附加组件",并且会产生时间成本,就像大多数其他多线程结构一样(甚至处理器级别的原子操作都要慢一些)。您可以走互斥锁的路线,但是,我们要进入多线程领域,这可能超出了您的问题范围。