`
aigo
  • 浏览: 2760338 次
  • 性别: Icon_minigender_1
  • 来自: 宜昌
社区版块
存档分类
最新评论

[C++]std::atomic_flag的初始化问题

阅读更多

如果定义了 std::atomic_flag 类型变量,则初始化必须在定义的时候初始化,不能在构造函数中初始化。

 

如果在构造函数中初始化,则会出现出现下面两种错误

class A
{
private:
	 std::atomic_flag flag;
	 
public:
	 A()
	 {
		flag = ATOMIC_FLAG_INIT;
	 }
}

 错误:

error C2280: 'std::atomic_flag &std::atomic_flag::operator =(const std::atomic_flag &)': attempting to reference a deleted function

 

class A
{
private:
	 std::atomic_flag flag;
	 
public:
	 A() : flag(ATOMIC_FLAG_INIT)
	 {
	 }
}

 错误

error C2280: 'std::atomic_flag::atomic_flag(const std::atomic_flag &)': attempting to reference a deleted function

 

正确的初始化方式是:

class A
{
private:
	 std::atomic_flag flag = ATOMIC_FLAG_INIT;
	 
public:
	 A()
	 {
	 }
}

 

分享到:
评论

相关推荐

    C++ string类的隐式共享写时拷贝实现代码

    2. **构造与赋值**:构造函数需要初始化`std::shared_ptr<char>`,并根据传入的字符串创建字符数组。赋值操作符(`=`)需要考虑右值引用(Rvalue References)和左值引用(Lvalue References),以便在适当的时候...

    C++ 14.0.zip

    - **`std::atomic_flag`**:提供原子标志操作,对于简单的同步原语(如自旋锁)很有用,是C++11中`std::atomic`的补充。 4. **编译器优化**: - **更强的 constexpr**:C++14放宽了`constexpr`的限制,允许更多的...

    linux下线程安全的singleton模板

    不过,这个概念可以借鉴,通过将Singleton的实例化过程延迟到首次访问时,利用C++的静态局部变量的线程安全初始化特性,可以达到线程安全的目的。当多个线程尝试初始化静态局部变量时,只会有一个线程能够执行,其他...

    C++完美实现Singleton模式

    Singleton模式是一种设计模式,用于确保一个类只有一个实例,并提供一个全局访问点。...在这个版本中,`std::call_once`确保`createInstance`函数只被调用一次,保证线程安全地初始化Singleton实例。

    [新C..标准:C..0x].(Overview.of.the.New.C..:C..0x).Scott.Meyers.文字版

    - **初始化列表构造**:C++0x 支持使用初始化列表来构造容器和其他类型。 ```cpp std::vector<int> v{1, 2, 3}; // 使用初始化列表构造 ``` #### 二、右值引用与移动语义 - **右值引用**:右值引用允许更高效地...

    一个关于封装了互斥锁的类实例

    4. 原子操作:为了确保在解锁过程中不会出现并发问题,可能会使用C++的原子操作(如`std::atomic_flag`)来实现无锁编程,提高效率。 `MutexLock.cpp`和`MutexLock.h`文件分别包含了类的实现和声明。`MutexLock.cpp...

    moderncpp:ModernCPP探索C ++ v20

    4. if和switch语句中的初始化:可以在这些控制流结构中初始化变量。 5. 条件变量(std::condition_variable_any):提供了一种等待任意类型的条件变量,增加了线程同步的灵活性。 6. `std::variant`:用于表示有限...

    C++ 标准 ISO 14882-2011

    构造函数(Constructors)、临时对象(Temporary objects)、转换(Conversions)、析构函数(Destructors)、自由存储(Free store)、初始化(Initialization)、构造和析构(Construction and destruction)、...

Global site tag (gtag.js) - Google Analytics