将 C++ 类转换为 C 结构(及其他)

2021-12-23 00:00:00 class c struct c++

过去几天我一直在降级"> 1000 文件的 C++ 代码到 C.到目前为止一直进展顺利.突然就和一个班级面对面了...

Past few days I have been "downgrading" > 1000 filem of C++ code into C. It's been going well until now. Suddenly I'm face to face with a class...

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

The compiler pointed out the error first in the header file:

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

当然,C文件也要利用这一点

And of course, the C file has to take advantage of this

foobar fooey;
fooey.ObtainControl();

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

I don't even know where to start.... Help?

推荐答案

将 foobar 变成普通结构体

Turn foobar into a normal struct

struct foobar {
    goo mutex;
};

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

Create your own "constructor" and "destructor" as functions that you call on that struct

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

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

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

相关文章