操作符重载-没有匹配的' Operator != '(操作数类型为
Operator Overloading - no match for ‘operator!=’ (operand types are
我是一个在大学学习c++的新手,在我的一个作业中,我总是遇到一个错误,我不知道如何解决,如果你的资深和/或天才可以帮助我/推动我在正确的方向,我将不胜感激。
我似乎有一个问题在实现我的类函数,特别是操作符重载。下面是我的头文件:
#ifndef LIBRARY_H
#define LIBRARY_H
#include "book.h"
#include <iostream>
#include <string>
using namespace std;
class Library;
class Library
{
private:
string name;
Book** books;
int librarySize;
int numBooks;
public:
//Constructor, Copy constructor and Destructor
Library(string a);
Library(const Library& obj);
~Library();
//Operator overloads
Library& operator+=( Book right);
Library& operator-=(Book right);
Library& operator=(const Library &right);
Library& operator++(int);
Library& operator--();
//Accessors
Book* getBook(string);
bool isFull();
void print();
};
#endif
错误似乎来自这里在我的。cpp文件:
#include"library.h"
#include "book.h"
#include <iostream>
#include <string>
Library::Library(string a)
{
name = a;
}
Library::Library(const Library& obj)
{
name = obj.name;
librarySize = obj.librarySize;
numBooks = obj.numBooks;
//Copy Books* array
for(int x=0; x!= librarySize; x++)
*(books+x) = *(obj.books+x);
}
//Operator overloads
Library& Library::operator+=( Book right)
{
if(numBooks == librarySize)
cout<<"Library is full!n";
else
{
numBooks++;
*books[numBooks] = right;
}
return *this;
}
Library& Library::operator-=(Book right)
{
if(numBooks != 0)
{
for(int x=0; x!= numBooks; x++)
{
if(*books[x] != right){}
else
*books[x] = "";
}
}
else
cout<<"Library is empty!n";
return *this;
}
Library& Library::operator=(const Library &right)
{
name = right.name;
librarySize = right.librarySize;
numBooks = right.numBooks;
for(int x=0; x!= librarySize; x++)
*(books+x) = *(right.books+x);
return *this;
}
Library& Library::operator++(int)
{
librarySize++;
return *this;
}
Library& Library::operator--()
{
if(numBooks == librarySize)
{
*books[numBooks] = right;
numBooks--;
}
librarySize--;
return *this;
}
我得到这个错误,后面跟着一大堆"note:"s
root@kali:~/Desktop/Prac3# g++ -std=c++11 -c library.cpp library.h
library.cpp: In member function ‘Library& Library::operator-=(Book)’:
library.cpp:48:17: error: no match for ‘operator!=’ (operand types are ‘Book’ and ‘Book’)
在过去的两天里,我一直在寻找答案,但我的教授和互联网都没有给我一个解决方案。我也尝试了不同的方法做同样的事情,但我得到了其他的错误以及这个。虽然当我删除"-="重载时,它似乎没有给我所有的注释,它只是给我上面的错误。
提前感谢。
(我对整个"博客"程序不熟悉,所以如果我犯了任何网络礼仪错误,或者如果你需要更多信息,请评论,最好不要使用不良语言:)在-=操作符重载实现中,您将比较两个book是否为!=。似乎编译器找不到这个的任何实现,所以我假设您没有为Book.
相关文章:
- 与'operator='不匹配(操作数类型'String'且"void")
- 不正确的操作数类型 MSVC
- C2679 二进制"<<":未找到采用右操作数类型的运算符
- 错误:'operator>'不匹配(操作数类型为 'Student' 和 'Student'
- 与"运算符>>"不匹配(操作数类型为"QDataStream"和"QJsonObject")
- 与'operator<<'不匹配(操作数类型'std::ostream {aka std::basic_ostream<char>}'
- c++运算符重载-我实际返回的操作数类型是什么
- 没有运算符"=="与这些操作数匹配。操作数类型为:int == type_name'
- 与"operator<<"不匹配(操作数类型'std::ostream'
- C++ 重载:[错误] 与'operator='不匹配(操作数类型为 'String' 和"字符串")
- 错误:与"运算符>>"不匹配(操作数类型为"std::istream
- 与"运算符[]"不匹配(操作数类型为"std::unique_ptr<std::vector<int> >"和"int")
- 错误:与'operator='不匹配(操作数类型为 'PlDrustvo' 和"PlDrustvo")|
- 错误:与'operator='不匹配(操作数类型为"std::map<int、double>::iterator
- 没有运算符匹配这些操作数;操作数类型为: std::istream >> const char [5]
- \main.cpp|103|error: 与"operator<<"不匹配(操作数类型为"std::ostream {aka std::basic_ostream<char&g
- 重载运算符'<<'的使用不明确(操作数类型'ostream'(也称为"basic_ostream<char>")和"Person")
- 错误:与"运算符[]"不匹配(操作数类型为"QVector<int>"和"QCharRef")
- 错误:如果(object1 == object2),“操作器==”无匹配(操作数类型为“ const class”和“
- 没有运算符"="匹配这些操作数操作数操作数类型为 std::basic_ostream<char、std::char_traits<char>> = int