我如何初始化boost :: atomic变量

时间:2016-09-15 07:08:49

标签: boost

如何将原子变量初始化为struct,boost :: atomic MAX

我试过了:

#include <boost/atomic.hpp>

struct mem {
    // error: conversion from ‘int’ to non-scalar type ‘boost::atomics::atomic<int>’ requested
    boost::atomic<int> MAX = 100;

    // error: expected identifier before numeric constant
    boost::atomic<int> MAX(100);

    // error: ‘boost::atomics::atomic<T>::atomic(const boost::atomics::atomic<T>&) [with T = int]’ is private
    boost::atomic<int> MAX = (boost::atomic<int>) 100;

    // warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
    boost::atomic<int> MAX{100};
}

注意:我不能使用c ++ 11或c ++ 14。

2 个答案:

答案 0 :(得分:0)

此表格应该有效

boost::atomic<int> MAX(100);

如果它没有,那可能意味着MAX令牌被预处理器替换。尝试消除标题,使用不同的变量名等。

另见

答案 1 :(得分:0)

如果需要在C ++ 03中初始化struct / class成员,那么你必须编写一个构造函数。

.ie-

PS:sehe是正确的,警告你struct mem { boost::atomic<int> MAX; mem() : MAX(100) { } }; 在某些系统上可能是一个宏,你应该注意大写名称。