です。私は大学レベルでC++を学ぶ過程でかなり新しく/私の課題の1つで、あなたが退役軍人や天才が私を正しい方向に助けてくれるならば、私はそれを感謝します。オペレータオーバーロード - 'operator!='と一致しません(オペランドタイプは
私のクラス機能、具体的にはオペレータの過負荷のインパネレーションに問題があるようです。 次は私のヘッダファイルです:
#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;
}
私はの全体の多くが続くエラーとしてこれを取得「ノート:」S
[email protected]:~/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’)
は、私が過去2日間以来、答えを探しまわって私profesorsとインターネットの両方されていますまだ解決策を与えられていません。私は同じことをするためのさまざまな方法を試しましたが、私はこのエラーと同様に他のエラーも受け取ります。それは私が " - ="オーバーロードを削除すると、それは私にすべてのメモを与えるdoesnt、それは私に上記のエラーを与えるように思えます。
ありがとうございます。
(私はどのnetiqetteの誤りを犯したか、uがより多くの情報が必要な場合は、悪い言語なしprefferablyコメントしてください:)
2つの 'Book'オブジェクトを比較する比較演算子がありますか? –
また、なぜ 'Book'に*ポインタ*の配列がありますか?逆参照を開始する前に、配列ポイントのすべてのポインタをどこかに有効にしますか?あなたは配列のためにメモリを割り当てますか? –
申し訳ありませんが、完全な.cppファイルを投稿すると意味が分かります。 – Rishi