我有一个用C为我编写的库。在库中,有一个我需要使用的变量
在foo.h(在C中)

extern mystruct foobar;

在bar.h(在C++中)
我有以下类(class)。
#include foo.h

class myfoo {

private:
   mystruct foobar;
}

我想知道的是,如果我创建一个myfoo数组,是foobar的每个实例都引用相同的变量,还是每个实例都是独立于其他myfoo foobar的myfoo的唯一实例?

最佳答案

达成协议(protocol):您在foo.h中使用foobarbar.hfoo.h变量来表示,而不是(尤其是因为foobar仅声明myfoo,因此定义必须在实现文件中)。相反,您要在类的范围内重新声明具有相同名称和类型的变量。

这样,适用于实例成员变量的所有常规规则。特别是,每个foobar实例都有其自己的foo.h实例。

如果您从bar.h中删除了声明,则不会有任何改变:该声明与ojit_code文件完全无关。

关于c++ - 在C++中使用C头文件中的Extern变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13982868/

10-14 08:01