跟踪所有结构体的静态结构数组
a static struct array to keep track of all structs
我必须创建一个结构体,一个静态变量来跟踪有多少结构体是活的,还有一个所有当前结构体的列表。我在创建这个列表和适当的构造函数时遇到了麻烦。目前我有
class MyStruct{
public:
static int i;
static MyStruct *AllStructs;
MyStruct(){i++; (AllStructs++)=this;} //error happens here
};
int MyStruct::i=0;
MyStruct MyStruct::*AllStructs;
int main(){...}
正如您所看到的,我试图通过创建一个静态数组来实现这一点,该数组作为构造函数的一部分被添加,但是编译器在我指示的地方给了我一个错误:"左值需要作为赋值的左操作数"。它不允许我给静态数组赋新结构。
我做错了什么?记住,指针是我生活的祸根,所以请像对小孩子解释一样向我解释。非常感谢。
当您定义MyStruct MyStruct::*AllStructs;
时,您所做的就是为指向MyStruct
对象的单个指针分配内存,而不是为它们的数组创建空间。你想要的数组需要有一个有效的初始化内存位置,它可以存储所有你想要的指针的副本。这可能会变得混乱,所以您应该使用静态std::vector
来管理MyStruct
的内存分配。就像这样简单:
#include <vector>
#include <iostream>
class MyStruct{
public:
static std::vector<MyStruct*> AllStructs;
MyStruct(){AllStructs.push_back(this);}
};
std::vector<MyStruct*> MyStruct::AllStructs;
int main() {
MyStruct ms;
MyStruct ms2;
std::cout << MyStruct::AllStructs.size() << std::endl;
}
希望有帮助!
相关文章:
- 静态结构和一个定义规则
- 类的静态结构指针声明在C++
- 无法使用 strcpy 将字符串复制到静态结构成员
- 'class MyClass' 在尝试定义静态结构实例时不会命名类型
- constexpr静态结构类成员的声明冲突
- C 98如何在标题中初始化静态结构阵列
- C 类静态结构成员定义
- C++中静态结构的初始化
- 有没有办法将数组行为作为静态结构数据成员?
- C++静态结构类型成员初始化
- 类内定义的静态结构的静态成员的编译时默认值
- 从具有静态结构的基类派生
- 从静态函数访问非静态结构
- 匿名命名空间中的静态结构
- C++静态结构init-item没有命名类型
- 静态结构-定义、对象、成员
- 静态结构和正常结构的区别是什么
- 如何重置函数内部的静态结构
- c++中的静态结构和静态全局变量
- c++静态结构模板方法返回枚举类型