我想要使用boost :: mutex功能add我的結構單元。這裏是Detector.h未定義的參考boost ::互斥結構
class Detector {
private:
struct Cell{
static boost::mutex mutex_;
double energy;
double sqrt_energy;
int histories;
inline Cell(): energy(0.f), sqrt_energy(0.f), histories(0.f) {
boost::mutex mutex_; //I tried with and without this line
};
inline void add(double new_energy) {
mutex_.lock();
energy += new_energy;
sqrt_energy += new_energy*new_energy;
++histories;
mutex_.unlock();
};
};
typedef std::vector<Cell> CellVector;
CellVector EnergyPrimary;
}
在我的結構的定義,我用我的功能在Detector.cpp添加上細胞的載體。
Dectetor::Detector() : {
nVoxelX=1024;
nVoxelY=1024;
size=nVoxelX*nVoxelY;
EnergyPrimary=CellVector(size);
}
void Detector::Score(int cellID, double new_energy) {
EnergyPrimary[cellID].add(new_energy);
}
當我嘗試編譯它,我有mutex_.lock()和mutex_.unlock一個未定義的引用錯誤()。但是爲什麼當我使用類似的函數(當我調用EnergyPrimary [cellID] .energy + = new_energy;)重載operator + =時,它會起作用?
inline bool operator+= (double new_energy) {
mutex_.lock();
energy += new_energy;
mutex_.unlock();
return false;
};
你是否包含頭文件?你的編譯器知道在哪裏找到提升? – Jepessen
您的'mutex_'是靜態的,但我沒有看到您定義它的位置。你真的只想要所有單元和所有檢測器只有一個互斥體? – qPCR4vir
可能重複[什麼是未定義的引用/未解析的外部符號錯誤,以及如何解決它?](http://stackoverflow.com/questions/12573816/what-is-an-undefined-reference-unresolved-external-符號錯誤和怎麼辦我修復) – Danh