Ошибка error: no match for ‘operator>>’

Я смотрел кучу вопросов, и не мог найти ответ, специально для моего. Таким образом, я продолжаю получать ошибки в этом коде. Был бы очень признателен за вашу помощь.
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
#include #include #include #include #include using namespace std; int main() { setlocale(LC_ALL, "rus"); struct Timpul { int CodZien; float Temperatura; float Umiditatea; char DirVint [50]; float VitezaVint; } ziua[1000]; int n; cout"Введите количество данных: "; cin>>n; ofstream file ("Timpul.txt"); file.close(); for(int i=0; in; i++) { cout "Введите код дня " endl; cin>>ziua[i].CodZien; cout "Введите температуру дня "endl; cin>>ziua[i].Temperatura; cout "Введите процент влажности "endl; cin>>ziua[i].Umiditatea; cout "Введите направление ветра (не определено, север, юг, восток, запад, северо-запад) "endl; cin>>ziua[i].DirVint; cout "Введите скорость ветра в метрах в секунду "endl; cin>>ziua[i].VitezaVint; } int i; ifstream in ("Timpul.txt"); in.open("Timpul.txt"); for(int i=0; in; i++) { in>>ziua[i].CodZien>>"\t">>ziua[i].Temperatura>>"\t">>ziua[i].Umiditatea>>endl; in.close(); return 0; }
Добавлено через 8 минут
Ещё мне нужно сделать так, чтобы результат, который выводится на экран, записывался в текстовый файл.
Буду благодарен тем, кто поможет.
Заранее спасибо!
No match for ‘operator=’ c++ ошибка?
Ошибка на c=a-b;
Проблема с типами походу.
[Error] no match for ‘operator=’ (operand types are ‘massiv’ and ‘massiv’)
Не могу понять что он от меня хочет) Как исправить, подскажите добрые люди?
Комментировать
Решения вопроса 1
«I’m here to consult you» © Dogbert
massiv operator=(massiv &w)
должно быть
massiv& operator=(const massiv &w)
const в параметрах — важен.
Ответ написан более двух лет назад
Комментировать
Нравится Комментировать
Ответы на вопрос 2
Developer, ex-admin
Оператор присваивания должен возвращать ссылку на самого себя. У вас возвращается копия объекта.
Ответ написан более двух лет назад
Ошибка при попытке вывести endl: no match for ‘operator’)
Хочу написать класс обертку, который в зависимости от переменных будет или не будет выводить лог в stdout и/или файл log.txt .
#include #include using namespace std; struct A < bool use_log = 1, use_filelog = 0; ofstream log_file; void open() < use_filelog = 1; log_file.open("log.txt"); >>; template A &operator <<(A &a, T x) < if (a.use_log) < std::cout if (a.use_filelog) < a.log_file return a; > int main() < A a; a
Получаю ошибку при попытке вывести endl . В чём проблема не пойму. Может данный класс можно реализовать как-нибудь по другому? Вот начало полотна вывода от gcc :
4.cpp: In function ‘int main()’: 4.cpp:26:24: error: no match for ‘operator’) a A& operator <<(A&, T) template A &operator <<(A &a, T x) < ^ 4.cpp:14:23: note: template argument deduction/substitution failed: 4.cpp:26:27: note: couldn't deduce template parameter ‘T’ a << "Hello, World!" << endl; ^ In file included from /usr/include/c++/5/iostream:39:0, from 4.cpp:1: /usr/include/c++/5/ostream:628:5: note: candidate: templatestd::basic_ostream& std::operator<<(std::basic_ostream&&, const _Tp&) operator<<(basic_ostream&& __os, const _Tp& __x)
А вот от clang :
prog.cpp:26:27: error: reference to overloaded function could not be resolved; did you mean to call it? a & __os) ^ prog.cpp:14:23: note: candidate template ignored: couldn't infer template argument 'T' template A &operator<<(A &a, T x) <
No match for operator c как исправить
Сообщений: 64
no match for 'operator='
Не могу понять, что этой программке еще нужно
#include using namespace std; class matrica; class massiv < public:float *a; int n;float sum1; massiv(); void vivod(); massiv& massiv:: operator=(massiv& /*ob*/); massiv ( massiv & f); void sum_el(); void vivod_sum_el(); ~massiv() >; //=====================// massiv::massiv() //======================// void massiv::vivod() ////===================// void massiv::sum_el() > //=====================// void massiv::vivod_sum_el() //======================/ massiv& massiv::operator=(massiv& P2) //=================// massiv::massiv(massiv & f)/*konstruktor kopii massiva*/ //===================// class matrica < float *x; int n,m; public: float sum,min_s;float sum2; int stroka; int i,j;int kol_str; matrica(); void vvod(); void vivod(); void sum_el(); void vivod_sum_el(); void min_str(); massiv operator<<( /*const*/ matrica &); matrica operator-(massiv &mas); ~matrica()>; //=========================// matrica::matrica() //========================// void matrica:: vvod() //=======================// void matrica::vivod() > //=========================// void matrica::min_str() printf("Minimalnaya summa= %3.2f v stroke %d ",min_s, stroka); printf("\n"); > > //==================// massiv matrica:: operator <<( /*const */matrica & p1) else /*if (min_s return rez; > /*--------------------------------*/ void matrica::sum_el() > /*--------------------------------*/ void matrica::vivod_sum_el()*printf("\nsumma= %3.2f v stroke %d ",sum2, stroka); > printf("\n"); printf("koli4estvo strok novoj matrici = %d",kol_str);printf("\n");*/ cout /*--------------------------------*/ matrica matrica::operator-(massiv &p) return r; > /*-----------------------------*/ int main()
Вроде бы разобралась что к чему - а тут эта ошибка:
In function `int main()':
173 D:\. \. cpp no match for 'operator=' in 'V = matrica:perator <<(matrica&)(((mat rica&)(&M2)))'
note D:\. \. cpp:48 candidates are: massiv& massiv:perator=(massiv&)
подсказка говорит что нужна перегрузка оператора = или как. уже ничего не понимаю..как сделать програмку рабочей??
| lisica198808 |
| Посмотреть профиль |
| Найти ещё сообщения от lisica198808 |