我确定我的问题很愚蠢,我根本没有多少c ++经验。
我尝试调用一个函数,如果输入的值已经在集合中,则该函数将返回true。当我在另一个函数中调用此函数时,我收到错误,我不确定原因。
这是我调用函数的地方:
Set::Insert(const value_type& entry){
if(!Contains()){...
这是我正在调用的函数:
bool Set::Contains(value_type& entry) const{
int temp = 0;
for(int i = 0; i < used; i++){
if(data[i] == entry){
return true;
}else{
temp++;
}
}
if(temp == used) return false;
}
肯定有更好的方法可以做到这一点但是现在我更专注于为什么它不会工作。
我得到的错误是没有用于调用Set :: Contains()的匹配函数 但我不明白为什么。我有函数原型。
public:
typedef int value_type;
typedef std::size_t size_type;
static const size_type CAPACITY = 5;
Set();
Insert(const value_type& entry);
Remove();
bool Contains(value_type& entry) const;
Print();
moveForward();
moveBack();
~Set();
答案 0 :(得分:1)
const value_type&
(entry
中Set::Insert
的类型)不能隐式强制转换为value_type&
(Set::Contains
的参数类型拿走)。由于Set::Contains
不会改变其参数,因此您应该能够使其const value_type&
。