c++ - 继承类为静态

标签 c++ inheritance static pthreads

我在 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/

相关文章:

oop - 如何摆脱继承

c# - C++ 在 Visual Studio 2010 中从二进制文件读取 void* 数据作为 utf8

android - 如何使用 NDK 有效地放大视频帧

c++ - 在 C++ 中复制一个未知的具体类型

java - 如何从父类(super class)类型的ArrayList中获取某个子类型的对象?

c++ - 在函数静态变量上调用 setter 一次

android - 为 Android 编译 VLC 时出现问题 - libvlcjni.so

c# - 读取派生类的属性值

c# - 具有多个应用程序实例的静态成员行为 - C#

c# - 制作静态类当前状态的快照对象