文件:服务.hpp
class Service
{
private:
boost::unordered_map<std::string,int> m_mapModuleType2FD;
void ProcessRequest();
public:
static void* KeepAlive(void* arg);
};
文件:服务.cpp:
在函数Process Request中我更新了 map
void Service::ProcessRequest()
{
m_mapModuleType2FD["ak"] = 1;
LaunchKeepAlive();
}
void Service::LaunchKeepAlive()
{
pthread_create( & m_ptKeepAliveThreadID, NULL, Service::KeepAlive, NULL );
}
现在在 KeepAlive 中我试图寻找更新的值
void * Service::KeepAlive(void* arg)
{
boost::unordered_map<std::string,int>::iterator itrDummy;
itrDummy = m_mapModuleType2FD.find("AK"); --- Line 420
}
哪里出错了
错误:第 420 行。在静态成员函数中无效使用成员“Service::m_mapModuleType2FD”
我是 C++ 的新手..所以任何输入都将不胜感激
最佳答案
在类中声明为 static
的函数不与此类的任何实例相关联(即在其主体内没有可访问的 this
指针)。
因此您不能访问任何非静态成员变量(无论是私有(private)的、 protected 还是公共(public)的,都没有关系)。
要么使您的函数成为非静态的(并在您的类的实例上调用它),要么使 boost::unordered_map
成为静态的。
(因为我不知道你真正想做什么,你必须弄清楚哪种方法适合你的需要)
关于c++ - 如何访问静态 void* 函数中的私有(private)成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16981999/