Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 对象数组_C++_Oop_Class_Object - Fatal编程技术网

C++ 对象数组

C++ 对象数组,c++,oop,class,object,C++,Oop,Class,Object,我需要做一些我认为叫做对象数组的事情例如:一个玩家访问服务器,该服务器将该玩家分配为这样一个组的一个对象,因此将有许多相同类的对象 有没有一种方法可以让每个玩家使用一行代码,但必须是一个源代码实时编辑和编译,并且不停止服务器,这是不可能的,但要演示: Player p0000001 ("Nickname", 150); Player p0000002 ("OtherNickname", 17); Player pNNNNNNN ("Nick", 00); Player players[0].n

我需要做一些我认为叫做对象数组的事情例如:一个玩家访问服务器,该服务器将该玩家分配为这样一个组的一个对象,因此将有许多相同类的对象

有没有一种方法可以让每个玩家使用一行代码,但必须是一个源代码实时编辑和编译,并且不停止服务器,这是不可能的,但要演示:

Player p0000001 ("Nickname", 150);
Player p0000002 ("OtherNickname", 17);
Player pNNNNNNN ("Nick", 00);
Player players[0].nickname = "Nickname";
Player players[0].level = 150;
Player players[1].nickname = "OtherNickname";
Player players[1].level = 17;
我想要这样的东西:

Player p0000001 ("Nickname", 150);
Player p0000002 ("OtherNickname", 17);
Player pNNNNNNN ("Nick", 00);
Player players[0].nickname = "Nickname";
Player players[0].level = 150;
Player players[1].nickname = "OtherNickname";
Player players[1].level = 17;
这有可能吗?我只需要一个演示来适应。
谢谢,Bruno Alano。

最好使用以下选项之一:

#包括
向量机;
玩家。推回(玩家(“昵称”,150));

可以找到对std::vector的完整参考。

如果我理解正确,您希望动态处理未知数量的播放器(这意味着您无法在编译时硬编码)。 这通常意味着使用new/delete动态分配内存。 因为您不知道会有多少玩家,所以应该使用动态大小的数据结构,如std::vector或std::list


如果你使用一个STD::Vector /Read尝试处理指针而不是对象本身,因为这会触发拷贝构造函数、析构函数,因此会导致大量的不必要的操作,因为这些值是保持的。

< P>我不确定,但是我认为你需要一个C++程序来监视输入文件。这是真的吗?如果是,您只需要程序读取每一行(即while!eof)。客户端将以追加模式打开文件,并在新用户加入服务器时添加行

您可以在此处找到一些代码:


希望这有帮助。

对不起,我还不知道如何使用向量。其他方法是否正在使用类?@Bruno。那么,是时候学习了。向量实际上只是一个更难处理的数组。向量是一个类。@Bruno:不完全是,假设您只使用
std::vector
。与模板的唯一联系是在创建新向量和创建迭代器时。@Bruno。“了解模板吗?”。只有在使用它们的意义上,而不是写它们。将吃饭与从头开始做饭进行比较。在
std::vector
中重新指出,请参阅。根据您正在做的事情,存储副本可能会更好。从效率的角度来看,我认为存储一个指针并为每个对象创建一个对象更快。我早年也犯了一些设计错误,后来花了一周时间才找到,这是由stl容器中的副本造成的。当然,这不是容器的错,但这有助于对我隐瞒我的错误,所以我看到它们太晚了。:)