我在 C++ 中有以下结构:
class A
{
protected:
int a;
};
class B : public A
{
public:
static void initThreads(); //Initialize threads (pthreads)
/* Threads */
static void* send(void*);
static void* receive(void*);
}
“发送”和“接收”这些函数对“a”进行操作。但是不能在静态函数中编辑非静态成员。因为send和receive是线程,所以需要定义为static。尽管 A 类有多个对象,但我只有 1 个 B 类对象。
那么,有没有办法以某种方式在“发送”和“接收”中使用“a”?
最佳答案
静态成员函数不适用于非静态成员,因为它们没有附加对象;他们缺少隐含的 this
指针,该指针被不可见地传递给非静态成员函数。
解决这个问题的方法是显式传递一个指向要使用的对象的指针。您的静态函数将有权访问对象的私有(private)和 protected 成员,因为它是类的一部分。
关于c++ - 继承类为静态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6416019/