如果您想在下次输入相同的函数时再次访问相同的 C++ 对象,您可以将它们声明为static
函数内部。这将使函数的每次调用共享同一组(静态)变量。
如果多个函数需要访问同一个对象,您可以在命名空间范围内(在任何函数或类之外)定义它们。访问对象的所有函数调用将共享相同的全局变量。
如果您不希望通过使它们成为全局或隐含的实例共享,static
最好的选择(无论如何最好的选择)是围绕类编写一个 C 包装器,其中包含动态分配实例的创建/销毁函数班上。例如:
// x.hpp
class X {
public:
X(int);
void foo();
};
// x_wrapper.h
extern "C" {
void* create_x(int arg);
void destroy_x(void* anX);
void x_foo(void* anX);
}
// x_wrapper.cpp
#include "x.hpp"
#include "x_wrapper.h"
void* create_x(int arg) {
return new X(arg);
}
void destroy_x(void* anX) {
X* self = (X*)anX;
delete self;
}
void x_foo(void* anX) {
X* self = (X*)anX;
return self->foo();
}