On 29 Sep 2006 18:28:10 -0400,
(Greg Comeau) wrote:
>In article <>,
>Roland Pibinger <> wrote:
>>You can use forward declared C++ types - 'class' renamed to 'struct'
>>which may be helpful in that case.
>
>Only if it's truly POD classes.
When you use only pointers it works with non-POD classes too, eg.
// myclass.h
struct MyClass;
typedef struct MyClass MyClass;
extern "C" {
MyClass* createMyClass();
int doSomething (MyClass* m, int i);
void destroyMyClass (MyClass* m);
}
// myclass.cpp
#include "myclass.h"
class MyClass {
public:
virtual int doSomething (int i) { return i; }
virtual ~MyClass() {}
};
MyClass* createMyClass() { return new MyClass; }
int doSomething (MyClass* m, int i) {
return m ? m->doSomething(i) : 0;
}
void destroyMyClass (MyClass* m) { delete m; }
// usage in C program:
int main() {
MyClass* m = createMyClass();
doSomething (m, 7);
destroyMyClass (m);
}
Best regards,
Roland Pibinger