Не работает перегрузка оператора <<
В чем может ошибка быть?
#include <string>
using namespace std;
class NOTE
{
private:
string name;//Имя Фамилия
string phone;//Номер телефона
string birthday;//Дата рождения
public:
NOTE();//Конструктор по умолчанию
NOTE(string n, string p, string b);//Конструктор
string GetName();//Получение значения имени
string GetPhone();//Получение значения номера телефона
string GetBirthday();//Получение значения дня рождения
void SetName(string n);//Установка Имени
void SetPhone(string p);//Установка номера телефона
void SetBirthday(string b);//Установка Дня Рождения
std::ostream& operator<< (std::ostream& out);
};
#include "Note.h"
#include <iostream>
NOTE::NOTE()//Конструктор по умолчанию, устанавливающий все значения = 0
{
name = "0";
phone = "0";
birthday = "0";
}
NOTE::NOTE(string n, string p, string b)//Конструктор с 3-мя передаваемыми значениями
{
name = n;
phone = p;
birthday = b;
}
string NOTE::GetName()//Функция для отображения имени
{
return name;
}
string NOTE::GetPhone()//Функция для отображения телефона
{
return phone;
}
string NOTE::GetBirthday()//Функция для отображения дня рождения
{
return birthday;
}
void NOTE::SetName(string n)//Функция для установки имени
{
name = n;
}
void NOTE::SetPhone(string p)//Функция для установки телефона
{
phone=p;
}
void NOTE::SetBirthday(string b)//Функция для установки дня рождения
{
birthday=b;
}
std::ostream& NOTE:: operator<< (std::ostream& out)
{
out << name;
return out;
}
#include "Note.h"
#include <iostream>
NOTE::NOTE()//Конструктор по умолчанию, устанавливающий все значения = 0
{
name = "0";
phone = "0";
birthday = "0";
}
NOTE::NOTE(string n, string p, string b)//Конструктор с 3-мя передаваемыми значениями
{
name = n;
phone = p;
birthday = b;
}
string NOTE::GetName()//Функция для отображения имени
{
return name;
}
string NOTE::GetPhone()//Функция для отображения телефона
{
return phone;
}
string NOTE::GetBirthday()//Функция для отображения дня рождения
{
return birthday;
}
void NOTE::SetName(string n)//Функция для установки имени
{
name = n;
}
void NOTE::SetPhone(string p)//Функция для установки телефона
{
phone=p;
}
void NOTE::SetBirthday(string b)//Функция для установки дня рождения
{
birthday=b;
}
std::ostream& NOTE:: operator<< (std::ostream& out)
{
out << name;
return out;
}
#include <iostream>
#include "Contact.h"
#include "Note.h"
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian");
NOTE Iv("Иван Иванов", "79153670773", "15.02.2001");
}
Ответы (1 шт):
Автор решения: Артём Оконечников
→ Ссылка
Ну почему не работает. В принципе работает, вот так:
Iv << std::cout;
Что эквивалентно следующему вызову и вашей сигнатуре operator<< (std::ostream& out)
Iv.operator<<(std::cout);
Если вам нужен синтаксис, при котором ostream должен обрабатывать тип NOTE, то лучше следующий подход:
friend std::ostream& operator<<(std::ostream & out, const NOTE& note);
...
std::ostream& operator<<(std::ostream & out, const NOTE & note)
{
out << note.name;
return out;
}