浏览代码

fixed CAddInfo::operator[] (mutable version)

Henning Koehler 7 年之前
父节点
当前提交
68b757eb53
共有 2 个文件被更改,包括 9 次插入2 次删除
  1. 7 0
      lib/HeroBonus.cpp
  2. 2 2
      lib/HeroBonus.h

+ 7 - 0
lib/HeroBonus.cpp

@@ -178,6 +178,13 @@ bool CAddInfo::operator!=(si32 value) const
 	return !operator==(value);
 }
 
+si32 & CAddInfo::operator[](size_type pos)
+{
+	if (pos <= size())
+		resize(pos + 1, CAddInfo::NONE);
+	return vector::operator[](pos);
+}
+
 si32 CAddInfo::operator[](size_type pos) const
 {
 	return pos < size() ? vector::operator[](pos) : CAddInfo::NONE;

+ 2 - 2
lib/HeroBonus.h

@@ -90,7 +90,7 @@ private:
 class DLL_LINKAGE CAddInfo : public std::vector<si32>
 {
 public:
-	static const si32 NONE = -1;
+	enum { NONE = -1 };
 
 	CAddInfo();
 	CAddInfo(si32 value);
@@ -98,7 +98,7 @@ public:
 	bool operator==(si32 value) const;
 	bool operator!=(si32 value) const;
 
-	using std::vector<si32>::operator[];
+	si32 & operator[](size_type pos);
 	si32 operator[](size_type pos) const;
 
 	std::string toString() const;