Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.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++;将向量化类传递给另一个类_C++_Class - Fatal编程技术网

C++ c++;将向量化类传递给另一个类

C++ c++;将向量化类传递给另一个类,c++,class,C++,Class,我试图在不使用全局变量的情况下编写代码,因为大多数人告诉我这是一个坏习惯,所以我正在改变我的程序的工作方式 我在将一个类的多个实例传递给另一个类时遇到问题。我需要能够在另一个类中修改一个类的多个实例 以下是我正在尝试做但却惨遭失败的事情: int main() { Players *player[6]; //preparing 6 instances of Players() so I can loop through them in another class for (int i = 0;

我试图在不使用全局变量的情况下编写代码,因为大多数人告诉我这是一个坏习惯,所以我正在改变我的程序的工作方式

我在将一个类的多个实例传递给另一个类时遇到问题。我需要能够在另一个类中修改一个类的多个实例

以下是我正在尝试做但却惨遭失败的事情:

int main() {
Players *player[6];

//preparing 6 instances of Players() so I can loop through them in another class
for (int i = 0;i<6;i++){
player[i] = new Players();
}
player[0]->name = "fluffy";
现在我想调用另一个类(不管是哪个类),我想将多实例类播放器传递给它,以便它可以读取和修改这些实例类中的数据

例如,一个类的函数可以读取player[0]->名称并将其修改为“sandpaper”

如何在不从编译器中获取错误的情况下实现这一点

我愿意接受一种完全不同的方法的建议(我曾尝试使用struct变量并传递它,但我也遇到了其他问题)

谢谢,,
Kaven

首先,我会使用
std::vector
(不是指针!)来解决这个问题。其次,我只是通过引用将这个向量传递给其他函数。

我建议这样处理:

int main() 
{
unique_ptr<vector<Player>> playersVector (new vector<Player>);

    for (int i = 0;i<6;i++)
    {
        playersVector->push_back(Players());
    }
    playersVector->at(0).name = "fluffy";
}
如果希望在主类中拥有所有权,请通过普通指针传递:

playersVector.get()

我还建议使用Get/Set方法,而不是直接访问类字段

显示您的代码和错误。请在问题中添加错误文本好吗?您的“另一个类”是什么,以及您希望将多个实例传递到其中的方法是什么?显示代码。正如其他人告诉你的,提供更多信息。还有一点:你使用了一个像向量一样的现代构造,但是你将玩家类实例存储在一个数组中
name=”“
与字符串ctor将自动执行的行为相同。使用封装,不要直接访问你的成员。在坏习惯的基础上,你可能还想考虑不要在你的类中使用公共变量。你知道,OP有一个指向玩家的指针数组,你有一个指向玩家的数组/向量的指针吗?不是说这是错误的,只是想知道这是否是故意的?我只是提出了一种可能性。OP并没有具体说明他想要如何处理这个问题,所以我只是提供了一个可能的解决方案。但正如你所提到的,我的建议不同于作品一。
int main() 
{
unique_ptr<vector<Player>> playersVector (new vector<Player>);

    for (int i = 0;i<6;i++)
    {
        playersVector->push_back(Players());
    }
    playersVector->at(0).name = "fluffy";
}
move(playersVector)
playersVector.get()