访问c++;c文件中的类成员函数 我正在实现一个基于C++类的库文件。我需要把这个库链接到C文件和C++文件。我想,从C++文件中实例化类不会有问题。我也找到了从c文件实例化类的方法,但似乎每次调用函数时都需要传递对象。有没有办法直接在c文件中使用实例化对象来调用成员函数

访问c++;c文件中的类成员函数 我正在实现一个基于C++类的库文件。我需要把这个库链接到C文件和C++文件。我想,从C++文件中实例化类不会有问题。我也找到了从c文件实例化类的方法,但似乎每次调用函数时都需要传递对象。有没有办法直接在c文件中使用实例化对象来调用成员函数,c++,class,C++,Class,找到下面的代码示例 Myclass.h #ifndef __MYCLASS_H #define __MYCLASS_H class MyClass { private: int m_i; public: void int_set(int i); int int_get(); }; #endif MyClass.cc #include "MyClass.h" vo

找到下面的代码示例

Myclass.h

#ifndef __MYCLASS_H
#define __MYCLASS_H

class MyClass {
        private:
                int m_i;
        public:
                void int_set(int i);

                int int_get();
};

#endif
MyClass.cc

#include "MyClass.h"
void MyClass::int_set(int i) {
        m_i = i;
}

int MyClass::int_get() {
        return m_i;
}
MyMain_c++.cc

#include "MyClass.h"
#include <iostream>

using namespace std;

int main(int argc, char* argv[]) {
        MyClass *c = new MyClass();
        c->int_set(3);
        cout << c->int_get() << endl;
        delete c;
}
MyWrapper.cc

#include "MyClass.h"
#include "MyWrapper.h"

extern "C" {
        MyClass* newMyClass() {
                return new MyClass();
        }

        void MyClass_int_set(MyClass* v, int i) {
                v->int_set(i);
        }

        int MyClass_int_get(MyClass* v) {
                return v->int_get();
        }

        void deleteMyClass(MyClass* v) {
                delete v;
        }
}
MyMain_c.c

#include "MyWrapper.h"
#include <stdio.h>

int main(int argc, char* argv[]) {
        struct MyClass* c = newMyClass();
        MyClass_int_set(c, 3); // issue : i need to send the object 
                                          everytime
        // c->int_set(3); any ways of using like this??
        printf("%i\n", MyClass_int_get(c));
        deleteMyClass(c);
}
#包括“MyWrapper.h”
#包括
int main(int argc,char*argv[]){
结构MyClass*c=newMyClass();
MyClass_int_set(c,3);//问题:我需要发送对象
每次
//c->int_set(3);有这样的使用方法吗??
printf(“%i\n”,MyClass_int_get(c));
删除类别(c);
}

与您的问题无关,但请阅读这篇文章……我们会处理好的。至于您的问题,没有其他解决方法。C不是C++。如果你想使用C++对象,你需要一些方法来将对象实际传递给需要它的函数。C++也是如何内部工作的,当调用成员函数时,对象作为一个隐藏的第一个参数传递。无论你做什么,你总是需要实例和函数。C++中,是 OBJ-> FULL()/<代码>,在<代码> C <代码>中,它是代码> FoO(OBJ)< /代码>。现在还不清楚你的目标是什么。在C或C++中,没有Pascal的<代码>与关键字的类似,如果这是你所要问的。
#include "MyWrapper.h"
#include <stdio.h>

int main(int argc, char* argv[]) {
        struct MyClass* c = newMyClass();
        MyClass_int_set(c, 3); // issue : i need to send the object 
                                          everytime
        // c->int_set(3); any ways of using like this??
        printf("%i\n", MyClass_int_get(c));
        deleteMyClass(c);
}
#include "MyClass.h"
#include "MyWrapper.h"

extern "C" {
    MyClass* newMyClass() {
            return new MyClass();
    }

    void MyClass_int_set(MyClass* v, int i) {
            v->int_set(i);
    }

    int MyClass_int_get(MyClass* v) {
            return v->int_get();
    }

    void deleteMyClass(MyClass* v) {
            delete v;
    }
}