c++ - 具有静态数据成员的对象的不同实例 - 可能吗?
问题描述
我想Data
在客户端使用 2 个不同的实例,而不更改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
解决方案
static
总是意味着在一个二进制文件中只有一个实例。拥有单独实例的唯一方法是在 Data 中拥有一个 Data 成员和一个非静态成员。
推荐阅读
- python - 如何在 TensorFlow2 中写出这个方程?(4x+2 = 0)
- c - 为什么不 char newWord[45]; 在像 char newWord[45] = ""; 这样的函数的开头有“干净”的值 做?
- c - 有没有办法编写一个不断使用越来越多内存的程序?我想为此编写一个简单的 C 程序
- javascript - 不调用 Enzyme、Sinon 和 Cha-onChange 测试 onChange?
- c++ - 如果我不包含此类的空构造函数,为什么会出现编译错误?
- webpack - FaviconsWebpackPlugin:无需注入即可输出?
- docker - Dockerfile 隐藏变量(用户创建)
- python - 查找 distutils 的 C 编译器版本
- sql - 如何显示记录 OrderID-Null-Null
- reactjs - 我使用 History.push 来路由组件,但它不加载 jqueries