rub*_*rdy 3 c++ pointers visual-c++
我有一个指向一个名为cPlayer的类的指针数组.
编译器:Visual C++ 2010 Express
在里面
cPlayer* players[MAX_PLAYERS];
Run Code Online (Sandbox Code Playgroud)
Max_Players是一个定义的值10.在标题中名为"OnlineData"的类中定义.
检查
if (players[a]){
// some code here
}
Run Code Online (Sandbox Code Playgroud)
我曾经尝试过,它仍然可以在这里找到一些代码
玩家被删除如下:
players[player->id]=0;
delete player;
Run Code Online (Sandbox Code Playgroud)
题
我想检查在players数组中位置a的项是否有值.我用它来求助玩家列表(碎片整理)
该数组在添加内容时正常工作,直到我尝试执行上述操作
要初始化全局或本地数组,您将使用:
cPlayer* players[MAX_PLAYERS] = {};
Run Code Online (Sandbox Code Playgroud)
但是,由于您的数组是类成员,因此无法执行此操作(直到C++ 11引入了类内初始化,但VS2010不支持此功能).相反,你必须编写代码,在构造函数体(或init函数或其他)中单独初始化每个成员:
struct S {
cPlayer *players[MAX_PLAYERS];
S() {
for (int i=0; i<MAX_PLAYERS; ++i) {
players[i] = NULL;
}
}
};
Run Code Online (Sandbox Code Playgroud)
或者比使用显式循环更好的是使用from <algorithm>
,例如std::fill
或std::fill_n
:
std::fill_n(players, MAX_PLAYERS, NULL);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1539 次 |
最近记录: |