私は少し初心者の C++ プログラマーで、コードの作業中に次のエラーに遭遇しました。
C:\Users\Matt\Desktop\C++ Projects\OperatorOverload\students.h|8|error: non-static reference member 'std::ostream& Student::out', can't use default assignment operator|
エラーは、このヘッダー ファイルの 8 行目でした。
#ifndef STUDENTS_H
#define STUDENTS_H
#include <string>
#include <vector>
#include <fstream>
class Student {
private:
std::string name;
int credits;
std::ostream& out;
public:
// Create a student with the indicated name, currently registered for
// no courses and 0 credits
Student (std::string studentName);
// get basic info about this student
std::string getName() const;
int getCredits() const;
// Indicate that this student has registered for a course
// worth this number of credits
void addCredits (int numCredits);
void studentPrint(std::ostream& out) const;
};
inline
std::ostream& operator<< ( std::ostream& out, const Student& b)
{
b.studentPrint(out);
return out;
}
bool operator== ( Student n1, const Student& n2)
{
if((n1.getCredits() == n2.getCredits())&&(n1.getName() == n2.getName()))
{
return true;
}
return false;
}
bool operator< (Student n1, const Student& n2)
{
if(n1.getCredits() < n2.getCredits()&&(n1.getName() < n2.getName()))
{
return true;
}
return false;
}
#endif
問題は、エラーの意味がよくわからないことと、それを修正する方法がわからないことです。誰にも解決策がありますか?