(我没有找到任何类似的问题......所以,我希望你能帮助我)
在我正在开发的 C++ 程序中,我有一个模拟线程的类。我在这里称它为“测试”。在其中,我有一个静态映射(std::map
来自 STL),其中存储了一些信号量(因为我需要所有线程都可以访问相同的信号量)。(我认为不值得解释为什么我使用 a map
,而不是 a vector
,但我相信这应该不是问题)
为了“获取”这个静态变量,我创建了一个getMutexHash()
函数,它返回一个指向 static 的指针map
。但是,由于某种原因,在编译后,我在尝试返回this pointer
.
下面的代码举例说明了这个问题:
// MAIN.CPP
#include "Test.h"
int main ()
{
Test test;
map<int, pthread_mutex_t>* mutexHash = test.getMutexHash();
return 0;
}
// TEST.H
#include <map>
#include <pthread.h>
using namespace std;
class Test
{
public:
map<int, pthread_mutex_t>* getMutexHash();
private:
static map<int, pthread_mutex_t> mutexHash;
};
// TEST.CPP
#include "Test.h"
map<int, pthread_mutex_t>* Test::getMutexHash()
{
return &mutexHash;
}
编译时,我没有收到错误或警告;但是在链接时,我收到此错误:
Test.o: In function `Test::getMutexHash()':
Test.cpp:(.text+0x9): undefined reference to `Test::mutexHash'
collect2: ld returned 1 exit status
有人能帮我吗?