1

学生オブジェクトをそのまま出力するために、 << 演算子をオーバーロードしようとしています。

Student: <name>,<number>,<email address>,<year>,<major>

次のようなプログラムをコンパイルしようとすると、エラーが発生し続けます。

error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'const std::string' (or there is no acceptable conversion)

私の実装ファイルの関数は次のようになります。

ostream& operator<<(ostream& output, const Student& student)
{
  output << "Student: " << student.name <<", " << student.m_Number <<", " << student.email <<", " << student.year << ", " << student.major << endl;
  return output;
}

このクラスのヘッダー ファイル:

#include <iostream>

using namespace std;

class Student
{
public:
   //Default constructor
   Student();
   //Set the student information
   Student setStudent(string[], int);
   //Retrieve the Student M_Number
   int getM_Number();

   friend ostream& operator << (ostream& output, const Student& student);



private:
   //Student's name, M_Number, Email Address, Year in School and Major
   string name;
   int m_Number;
   string email;
   string year;
   string major;

};

誰かが私にこの問題を引き起こしている理由を理解するのを手伝ってくれるなら、本当に感謝しています。

4

1 に答える 1

6

必要がある

#include <string>

の適切な宣言を得るためにoperator<<(std::ostream&, std::string)

于 2013-02-04T03:04:04.197 に答える