Форум программистов, компьютерный форум CyberForum.ru

Перегруженный оператор сдвига '<<' не функции-члена класса для объекта ostream - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Поиск букв и символов в тексте http://www.cyberforum.ru/cpp-beginners/thread862359.html
Привет знатокам! вот такая задача: "Дан текст, каждый символ которого может быть малой буквой, цифрой или одним из знаков "+","-","*". Группой букв будем называть такую совокупность последовательно расположенных букв, которой непосредственно не следует буква. Аналогично определим группу цифр и группу знаков. а) Подсчитать число вхождений буквы f в первые три группы букв ( в предложение, что...
C++ Вызов библиотеки классов C# из С++ Здравствуйте! Нужна помощь знающих людей. Предположим есть такая библиотека классов на C# в виде dll файла: using System; namespace ManagedDLL { public class ManagedClass { public int Add(int Number1, int Number2) http://www.cyberforum.ru/cpp-beginners/thread862357.html
Исправьте ошибку C++
Бинарный поиск не находит числа которые находятся в первой строке матрицы. #include <iostream> #include <iomanip> #include <conio.h> using namespace std; int main () { int i, j, el, m, k, kol= 0, w, last, first, mid,c,temp,x,z;
C++ Перевод из паскаля в с ++
Ребят помогите перевести в с ++ var p:array of integer; c,c1:char; i,j,N,K:integer; name:string; time1,time2:integer; begin readln(N,K); for i:=1 to K do
C++ md5 и указатели http://www.cyberforum.ru/cpp-beginners/thread862339.html
Здравствуйте! Есть функция md5 взятая из openssl, с помощью нее нужно сгенерировать хеш, данные для которого поступят из функции RSA, затем, нужно будет вернуть хеш в RSA для подписи. Для начала решил понять как md5 генерирует хэш и поиграться с указателем на переменную и с забитым значением в самой функции, НО проблема в том, что если я генерирую хэш от значения руками вбитого в функцию -...
C++ malloc(): memory corruption и corrupted double-linked list всем привет! такой вопрос. пытаюсь попробовать простой пример кода для функции MPI_Allgatherv на кластере. В итоге получаю следующую ошибку(и) : *** glibc detected *** ./main: malloc(): memory corruption: 0x0000000001ee6820 *** *** glibc detected *** ./main: corrupted double-linked list: 0x0000000001285510 *** все идет нормально до самой функции, после чего мне приходится прерывать... подробнее

Показать сообщение отдельно
System16v
3 / 3 / 0
Регистрация: 19.02.2014
Сообщений: 115
26.05.2015, 14:43
Подскажите пожалуйста. Как перегрузить оператор cout,не определяя ее дружественной функцией,а внутри класса?Надо сделать по заданию,но не пойму как,вылетают ошибки [C++ Error] Unit1.cpp(21): E2094 'operator<<' not implemented in type 'PhoneNumber' for arguments of type 'ostream' , чтоб можно было cout наоборот использовать,вот так - "Объект класса" << cout . Где ошибка подскажите пожалуйста.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//---------------------------------------------------------------------------
#include <vcl.h>
#include <iostream>
#include <cstdlib>
#include <iomanip>
#include "Unit2.h"
 
using namespace std;
 
int main()
{
 PhoneNumber phone;
 cout << "Enter phone number in the from (123) 456-7890:" << endl;
 // cin >> phone вызывает operator>>, неявно генерируя
 // вызов глобальной функции operator>>(cin,phone)
 cin >> phone;
 cout << "The phone number entered was: ";
 
 // cout << phone вызывает operator<<, неявно генерируя
 // вызов глобальной функции operator<<(cout,phone)
 phone << cout;
// cout << phone;
 system("pause");
 return 0;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//---------------------------------------------------------------------------
#include <vcl.h>
#include <iostream>
#include <cstdlib>
#include <iomanip>
#include "Unit2.h"
 
using namespace std;
 
// перегруженная операция передачи в поток; не может быть элементом класса,
// если мы хотим применять ее в форме cout << somePhoneNumber;
PhoneNumber PhoneNumber::operator<<(const PhoneNumber &number)
{
  cout << "(" << number.areaCode << ") " << number.exchange << "-"
         << number.line;
  return cout; // допускает форму cout << a << b << c;
}
 
// перегруженная операция извлечения из потока; не может быть элементом класса,
// если мы хотим применять ее в форме cin >> somePhoneNumber;
istream &operator>>(istream &input, PhoneNumber &number)
{
  input.ignore(); // пропустить (
  input >> setw(3) >> number.areaCode; // ввести код региона
  input.ignore(2); // пропустить ( и пробел
  input >> setw(3) >> number.exchange; // ввести код АТС
  input.ignore(); // пропустить дефис (-)
  input >> setw(4) >> number.line; // ввести номер линии
  return input; // допускает форму cin >> a >> b >> c;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//---------------------------------------------------------------------------
#include <vcl.h>
#include <iostream>
#include <cstdlib>
#include <iomanip>
 
using namespace std;
 
#ifndef Unit2H
#define Unit2H
class PhoneNumber
{
 
    friend istream &operator>>(istream &, PhoneNumber &);
  public:
    PhoneNumber operator<<(const PhoneNumber &);
  private:
    string areaCode; // 3 цифры регионального кода
    string exchange; // 3 цифры кода АТС
    string line; // 4 цифры номера линии
};
//---------------------------------------------------------------------------
#endif
Добавлено через 1 час 21 минуту
Никто не знает чтоль как оператор << перегрузить обычной функцией в классе? Я не могу сообразить,что должна возвращать функция? На "cout" ругается, пишет ошибку - [C++ Error] Unit2.cpp(15): E2034 Cannot convert 'ostream' to 'PhoneNumber' . Ну подскажите плз.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru