【发布时间】:2018-08-26 06:19:30
【问题描述】:
我正在尝试通过 DeerPark.cpp 在 game.cpp/.hpp 中将我的布尔向量 items[0] 更改为 true。但是,我无法弄清楚为什么 Xcode 会抛出此错误消息。感谢大家的时间和帮助。
这是我的错误信息,
No viable overloaded '='
当我这样做时,它发生在 DeerPark.cpp 中
input[1]= true; //and
input[0]= true;
游戏.hpp
#include <vector>
#include <iostream>
class Game
{
private:
std::vector<bool> items = std::vector<bool>(3);
public:
int intRange(int min, int max, int input);
void printMenu();
};
游戏.cpp
#include "Game.hpp"
#include <vector>
#include <iostream>
using namespace std;
void Game::printMenu()
{
items[0] = false;
items[1] = false;
items[2] = false;
}
鹿园.hpp
#include <vector>
#include "Game.hpp"
class DeerPark : public Space
{
protected:
int feedCounter;
public:
DeerPark();
void feed(Character *person, std::vector<bool>*input);
void get(Character *person, std::vector<bool>*input);
void kick(Character *person);
};
鹿园.cpp
#include "DeerPark.hpp"
#include "Space.hpp"
#include <vector>
#include "Game.hpp"
using namespace std;
DeerPark::DeerPark() : Space()
{
feedCounter = 0;
}
void DeerPark::feed(Character *person, vector<bool>*input)
{
feedCounter = feedCounter + 1;
if(feedCounter == 3)
{
input[1]= true;
}
}
void DeerPark::get(Character *person, vector<bool>*input)
{
Input[0] = true;
}
void DeerPark::kick(Character *person)
{
person->setStrength(-5);
}
【问题讨论】:
-
该错误消息肯定有特定的行。
-
@RemyLebeau:如果这确实是问题所在,那么它是实现中的一个错误。
std::vector<bool>::reference应该已经实现了operator=(bool)。我怀疑使用中的任何实现都有这样的 ommision。 -
两个问题:1.- 在函数
get中,您使用的是指向向量 (vector<bool>*input>) 的指针,并且您使用的是Input,大写字母“I”.. 2。 - 我假设vector<bool>*input>被用作Input[x],但它必须作为vector<bool>*input的许多对象的数组的指针来处理bool的向量。将您的metido 的定义更改为vector<bool>&input以传递向量的引用并根据需要使用它。 -
@JorgeOmarMedra:答案部分如下。
-
@JorgeOmarMedra 感谢您的解释!这确实是问题所在。 (*input)[0] 也可以!