我希望在客户端中使用2个不同的Data
实例,而无需更改其成员中的static
密钥或重置其成员的值。
struct Data
{
static std::vector<int> vi;
};
struct DataUser
{
DataUser(int s) {
for (int i = 0; i < s; ++i)
{
Data::vi.emplace_back(i);
}
}
int getSize() { return Data::vi.size(); }
};
std::vector<int> Data::vi(0);
//.............. use it
int main()
{
{
DataUser d1(5);
std::cout << d1.getSize() << "\n";
}
{
DataUser d2(10);
std::cout << d2.getSize() << "\n";
}
}
例如程序的输出是
5
15
我希望它是
5
10
答案 0 :(得分:1)
static
总是意味着在一个二进制文件中只有一个单独的实例。
拥有单独实例的唯一方法是在Data中拥有Data成员和非静态成员。