我有一个名为tmc的类,它现在包含(除其他外,这里不相关)一个私有构造函数、一个静态工厂方法和一个名为的实例方法ReadLoop (void*)
:
extern "C" {
#include <pigpiod_if2.h>
}
class tmc {
public:
static tmc* Initialize ();
static int main ();
private:
void *ReadLoop (void *params);
tmc ();
pthread_t *tmc_receiver_reader;
};
tmc::tmc ()
: tmc_receiver_reader (start_thread (tmc::ReadLoop, NULL))
{
}
void* tmc::ReadLoop (void *params)
{
return params;
}
tmc* tmc::Initialize ()
{
tmc* instance = new tmc ();
return instance;
}
int tmc::main ()
{
return (tmc::Initialize ()) == NULL ? 0 : 1;
}
现在的问题如下:我应该如何将ReadLoop
用作函数指针以与 中start_thread ()
包含的函数一起使用pigpiod_if2
?由于以下错误,此处显示的代码无法编译:
error: invalid use of non-static member function ‘void* tmc::ReadLoop(void*)’
tmc_receiver_reader (start_thread (tmc::ReadLoop, NULL))
我在这里看到了几个带有相同错误消息的问题,但没有一个是关于指向 C 函数的非静态成员方法的指针。请注意,即使这里创建的对象是单例,我也无法将其设为ReadLoop ()
静态。我在 Raspbian Buster 上使用 g++ 6.5.0。谢谢你。