我試圖做這樣的事情:鏈接錯誤,當我使用模板和靜態變量
class A
{
static pthread_mutex_t m;
public:
template<typename T>
static void TestFunc(T t) {
pthread_mutex_lock(&m);
}
static void Test()
{
TestFunc(13);
}
};
但收到鏈接錯誤:
/tmp/cc1HN0fI.o: In function
void A::TestFunc<int>(int)': TReaderThread.cpp:(.text._ZN1A8TestFuncIiEEvT_[_ZN1A8TestFuncIiEEvT_]+0xc): undefined reference to
A::m' collect2: error: ld returned 1 exit status make: *** [all] Error 1
看來,這個錯誤發生,只有當TestFunc是模板功能。這是代碼的小和平,我需要 TestFunc是模板,我的互斥體是靜態變量。是否有可能在模板處理中解決這個問題? P.S.真的,我需要做 - 實施示蹤劑singlton(同步輸出描述符)。
您定義了'm',對嗎? –