将一个有向量类传递给另一个类
c++ passing a vectored class to another class
我正在尝试编写不使用全局变量的代码,因为大多数人告诉我这是一个坏习惯,所以我正在改变我的程序的工作方式。
我有问题与传递一个类的多个实例到另一个类。我需要能够在另一个类中修改一个类的多个实例。
这是我想做的,但失败得很惨:
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";
Players.h
#ifndef PLAYERS_H_
#define PLAYERS_H_
#include <string>
#include <vector>
class Players {
public:
Players();
virtual ~Players();
std::string name;
bool hand;
int cif;
int id;
std::vector<int> autho;
std::vector<int> collec;
std::vector < std::vector <int> > puppet;
};
#endif /* PLAYERS_H_ */
Players.cpp
#include "Players.h"
Players::Players() {
// TODO Auto-generated constructor stub
name = "";
hand = false;
cif = -1;
id = -1;
}
Players::~Players() {
// TODO Auto-generated destructor stub
}
现在我想调用另一个类(无关紧要),我想把多实例类播放器传递给它,这样它就可以读取和修改这些实例类中的数据。
例如,一个类的函数可以读取播放器[0]->名称并将其修改为"sandpaper"
你如何做到这一点,而不会从编译器得到错误?
我愿意接受一种完全不同的方法来处理这个问题(我曾尝试使用结构变量并传递它,但我也有其他问题)
谢谢你,Kaven
首先,我将通过使用std::vector<Players>
(而不是指针!)来实现这一点。其次,我只是通过引用将向量传递给其他函数。
我建议这样做:
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()
我还建议使用Get/Set方法而不是直接访问类字段
相关文章:
- 将一个向量插入另一个向量的某个位置
- 将指向给定子类的指针从一个向量复制到另一个向量
- C++ STD 函数运算符:有没有一种方法可以通过函数将一个向量映射到另一个向量上?
- 将向量之间的数字放在另一个向量之间<vector>>如果两个数字的差值为 1
- 如何在不复制的情况下将一个向量移动到另一个向量中
- 使用 std::transform 将向量向量 (a) 添加到另一个向量向量 (b)
- 如何按另一个向量的方向调整一个向量?
- 将字符向量复制到另一个向量
- 如何将所有指针从一个向量移动到另一个向量?
- 如何从另一个向量中的另一个第一元素减去向量中的第一元素
- 用一个向量替换另一个向量的方法
- 如何根据另一个向量中给出的索引拆分向量?
- 按另一个向量对一个向量进行排序
- 向量迭代器不兼容的错误,用于保存另一个向量的迭代器的向量
- 如何从一个向量中删除最小元素并添加到另一个向量,而第一个变为空?
- C++将 X 向量数据插入到另一个向量
- 将向量{x,y,z}插入另一个向量
- 给出一个 std::vector 对另一个向量的内存的所有权?
- 从另一个向量中搜索和找到元素的有效方法
- 当我尝试将一个向量元素的值分配给另一个向量元素时,为什么我的应用程序会崩溃