c++ - 正确返回 vector 引用

标签 c++ vector reference return

我现在正在做一个项目,我对如何处理这个项目感到困惑。

class Unit: public Entity {
   string Name;
   int HP;
   int MP;
   int Agi;
   int Spr;
   int Def;
   int Atk;
   int Lvl;
   int Exp;
   std::vector<int> states;
   string unitType;
   public:
      int GetHP() {return HP};
      int GetMP() {return MP};
      int GetAgi() {return Agi};
      int GetSpr() {return Spr};
      int GetDef() {return Def};
      int GetAtk() {return Atk};
      int GetLvl() {return Lvl};
      int GetExp() {return Exp};
      std::vector<int>& GetStates() {return &states};
      string GetUnitType() {return unitType};
      virtual void SetHP(int newValue);
      virtual void SetMP(int newValue);
      virtual void SetAgi(int newValue);
      virtual void SetSpr(int newValue);
      virtual void SetDef(int newValue);
      virtual void SetAtk(int newValue);
      virtual void SetLvl(int newValue);
      virtual void SetExp(int newValue);

我需要返回对“std::vector states”的引用,以便我可以遍历它并查找值。我相信我应该使用 Set 因为我只有一个值而且不能重复,但我会把它留到以后再用。 “std::vector& GetStates() {return &states}”是否正确?应该将其更改为“std::vector& const GetStates() {return &states}”还是我完全关闭?我在这里看到了一个与此类似的帖子,但它没有具体回答我的问题,因为他们没有以与此相同的借口使用它。

最佳答案

如果statesstd::vector<int> , 然后 &statesstd::vector<int>* , 不是 std::vector<int>& .

是否返回引用的决定是由函数签名中提供的返回类型决定的,而不是由 return 决定的。执行中的声明。就做 return states .

关于c++ - 正确返回 vector 引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17257308/

相关文章:

c++ - 由于相互包含 header ,无法在模板化类中成功地成为模板化方法的好友

c++ - CRTP 向下转换方法调用

c++ - 如何仅使用Iterator显示Vector的前10个元素?

c++ - 从 vector 的 vector 填充 vector 的有效方法是什么?

perl - 对哈希值的数组引用进行排序

JavaScript 数组值到变量

c++ - 如何使用继承定义父类的函数?

c++ - vector::begin() 和 std::begin() 之间的区别

php - 单个元素的引用行为与数组容器的引用状态分离?

c++ - g++ 可变参数模板。简单示例代码无法编译,提示 'Not a template'