Acc*_*tor -3 c++ arrays null pointers initialization
我初始化一个实体指针数组并添加这样的实体......
Entity* ents[16];
Player* player = &Player(20, 24); // subclass of entity
Player* player2 = &Player(30, 30);
ents[0] = player;
ents[1] = player2;
Run Code Online (Sandbox Code Playgroud)
因为我已经知道它,所以我用16的大小来循环它们.
但是我不能对他们做任何事......因为他们中的一些不是"有效的".我无法在实体2-16上运行任何方法,因为我没有设置它们是什么.Visual Studio一直在寻找异常.所以我尝试将一个isValid方法添加到Entity类中,我甚至尝试给它一个公共布尔值并在构造函数中将其设置为true,但最终没有办法检查任何关于这些"无效实体"之一的数据而没有获得例外.因此,在尝试对其进行任何操作之前,我需要先了解一个实体是否有效.但是怎么样?
不,你不能对元素2-16 做任何事情,因为那些是无效的指针.你甚至没有将它们设置为NULL.它们只是无效的指针.您无法通过它们或其他任何方式调用任何函数.
您可以使用指针值nullptr来指示"未填充"的数组位置,但老实说,您应该使用a std::vector<std::unique_ptr<Entity>>存储指向良好数据的好指针并且根本没有"未填充"数组位置.矢量将根据需要增长.
碰巧的是,即使你所谓的"有效"数组元素也悬挂在临时指针上,因此根本不会"有效".我讨厌Visual Studio允许这样做:根据标准的规则,这个程序甚至不应该编译.