c++ - 将 C++ 类转换为 C 结构(以及更多)

标签 c++ c class struct

过去几天我一直在将 > 1000 个 C++ 代码文件“降级”为 C。 到现在为止一切顺利。突然我和一个类(class)面对面......

编译器首先在头文件中指出错误:

class foobar {
    foo mutex;
public:
    foobar() {
        oneCreate(&mutex, NULL);
    }
    ~foobar() {
        oneDestroy(mutex);
        mutex = NULL;
    }
    void ObtainControl() {
        oneAcquire(mutex);
    }
    void ReleaseControl() {
        oneRelease(mutex);
    }
};

当然,C 文件必须利用这一点

foobar fooey;
fooey.ObtainControl();

我什至不知道从哪里开始....帮忙?

最佳答案

将 foobar 变成一个普通的结构体

struct foobar {
    goo mutex;
};

创建您自己的“构造函数”和“析构函数”作为您对该结构调用的函数

void InitFoobar(foobar* foo)
{
   oneCreate(&foo->mutex);
}

void FreeFoobar(foobar* foo)
{
   oneDestroy(foo->mutex);
}

struct foobar fooStruct;
InitFoobar(&fooStruct);
// ..
FreeFoobar(&fooStruct);

等等

关于c++ - 将 C++ 类转换为 C 结构(以及更多),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5872915/

相关文章:

c++ - 为什么会出现段错误(数组作为类的元素)?

c++ - 灰度中的 glDrawPixels?

c - 使用 Unix 域套接字的 IPC

c - 如何忽略所有小于第一个参数值的输入,然后传递给数组/函数? (C语言)

java - 通用类型和 Instanceof

android - Kotlin 类转换异常

c++ - 哪个开源项目可以使用 'showcase'来进行中型项目的MAKEFILE管理?

c++ - 如何在 SQLite3 中使用 Qt QSqlDriver::subscribeToNotification?

c++ - 作为子目录添加时,CMake 不构建库

c - 什么信号(SIGPIPE,SIG_IGN);做?