我写了一个类,其中我想要一个原子整数,应将其最初设置为-1。
blue
自从我将匹配设置为#ifndef MIGRATINGTHREADS_VERTEX_H
#define MIGRATINGTHREADS_VERTEX_H
#include <set>
#include <atomic>
using namespace std;
class vertex{
public:
vertex(){};
int id;
bool visited = false;
std::set <int> adjacencyList;
private:
static std::atomic<int> matched{-1};
};
#endif
以来,我显然需要对其进行初始化,如图所示。但是,当我尝试使用static
进行编译时,出现以下错误:
g++ -std=c++14 -latomic
另外,如果我尝试以这种方式进行初始化
/tmp/ccRJwQzu.o:(.data+0x0): multiple definition of `vertex::matched'
/tmp/ccp52lOu.o:(.data+0x0): first defined here
collect2: error: ld returned 1 exit status
我遇到以下与原子构造函数有关的错误
class vertex{
public:
vertex(){};
int id;
bool visited = false;
std::set <int> adjacencyList;
private:
static std::atomic<int> matched;
};
在这里我只有一个匹配的定义,但是编译器认为这里有多个定义。这是原子作为类成员的问题,还是我的初始化问题?