C++Builder中如何让两个Form访问同一个变量

How to make two Forms access the same variables in C++Builder

我有两个表单,都包含具有这些全局变量的同一个 .cpp 文件:

static vector<News> allNews;
static vector<user> allUsers;
static admin appAdmin("admin", "adminpassword");
static int userIndex =0;

问题是,当表单 ANews 对象添加到 vector 时,第二个表单 B 似乎正在查看不同的 vector 那是空的。

我该如何解决这个问题?

两者都包含相同的 .cpp - 从不包含 .cpp 文件。使用以下内容创建 .h 文件:

extern vector<News> allNews;
extern vector<user> allUsers;
extern admin appAdmin;
extern int userIndex;

然后通过删除 static 来更新 .cpp 文件:

vector<News> allNews;
vector<user> allUsers;
admin appAdmin("admin", "adminpassword");
int userIndex = 0;

将新创建的 .h 文件包含到表单中。


如果您将带有 static 变量的 .cpp 文件包含为两种形式,您将得到两个翻译单元,其中每个翻译单元都有自己独特的 static 变量,这不是对其他翻译单元可见。