在为这个模板程序声明一个默认构造函数后,我正在处理:
template<typename T>
Set<T>::Set()
: size(0), capacity(8) {
//allocate new array
items = new T[capacity];
}
我有一个相对不起眼的功能contains
,用于测试其中是否items
包含特定项目。
template<typename T>
bool Set<T>::contains(const T& item) const {
for (int i = 0; i < size; i++) {
if (this->items[i] == item)
return true;
}
return false;
}
当我在某些位置调用它时它工作正常,例如这个函数读取items
并仅在没有其他副本时添加一个项目(我们的分配规范的一部分):
template<typename T>
void Set<T>::add(const T& item) {
if (this->contains(item) == 0) {
grow();
items[size++] = item;
}
}
但是当我在尝试重载运算符时调用它时==
,当我通过 DRMemory 运行它时,标题中出现错误
template<typename T>
bool Set<T>::operator==(const Set<T>& other) const {
int count = 0;
for (int i = 0; i < size; i++) {
if (this->contains(other.items[i])) {
count++;
}
}
if (count == size)
return true;
return false;
}