Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Vex788
0 / 0 / 0
Регистрация: 01.12.2015
Сообщений: 54
#1

Error C2679: бинарный "=": не найден оператор, принимающий правый операнд

15.05.2016, 19:14. Просмотров 1005. Ответов 6
Метки с++ (Все метки)

Ошибка 1 error C2679: бинарный "=": не найден оператор, принимающий правый операнд типа "std::basic_string<_Elem,_Traits,_Alloc>" (или приемлемое преобразование отсутствует) c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility 2089 1

Подскажите пожалуйста где ошибка.

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include "Table.h"
#include <iostream>
#include <iomanip>
#include <list>
#include <iterator>
#include <fstream>
#include <string>
 
Table::Table()
{
}
 
Table::Table(string filename)
{
    InFile(filename);
}
 
Table::~Table(void)
{
}
 
void Table::set()
{
 
}
 
void Table::InFile(string filename)
{
    ifstream fin(filename); 
    string str;
    int i = 0;
 
    while (!fin.eof())
    {
        fin >> obj.num;
        fin >> obj.name;
        fin >> obj.symbol;
        fin >> obj.latinName;
        fin >> obj.perid;
        fin >> obj.group;
        fin >> obj.mass;
        fin >> obj.aem;
        fin >> obj.density;
        fin >> obj.temperature1;
        fin >> obj.temperature2;
        fin >> obj.year;
        while (fin >> str && str != "]]")
            fin >> obj.discoverer[i];
        fin >> obj.spelling;
        BoxElements.push_back(obj);
        i++;
    }
}
 
void Table::OutElements()
{
    vector<Table>::iterator ptr;
    cout << "Nomer"
        << left << setw(5) << "name"
        << left << setw(5) << "symbol" 
        << left << setw(5) << "perid" 
        << left << setw(5) << "latinName"
        << left << setw(5) << "group"
        << left << setw(5) << "mass"
        << left << setw(5) << "aem"
        << left << setw(5) << "density"
        << left << setw(5) << "temp1"
        << left << setw(5) << "temp2"
        << left << setw(5) << "year"
        << left << setw(5) << "spelling"
        << left << setw(5) << "discoverer\n";
 
    for (ptr = BoxElements.begin(); ptr != BoxElements.end(); ptr++)
    {
        obj = *ptr;
        cout << obj.num 
            << left << setw(5) << obj.name 
            << left << setw(5) << obj.symbol 
            << left << setw(5) << obj.latinName
            << left << setw(5) << obj.perid
            << left << setw(5) << obj.group
            << left << setw(5) << obj.mass
            << left << setw(5) << obj.aem
            << left << setw(5) << obj.density
            << left << setw(5) << obj.temperature1
            << left << setw(5) << obj.temperature2
            << left << setw(5) << obj.year
            << left << setw(5) << obj.spelling;
            copy(obj.discoverer.begin(), 
            obj.discoverer.end(), 
            ostream_iterator<int>(cout, " "));
    }
}

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.05.2016, 19:14
Ответы с готовыми решениями:

Error C2679: бинарный ">>": не найден оператор, принимающий правый операнд
перелопатил кучу форумов, кругом одно и то же - якобы вставь библиотеку и будет...

Error C2679: бинарный "=": не найден оператор, принимающий правый операнд типа
Сразу скажу что в с++ полный ноль. Но есть потребность решить такую вот задачу:...

Error C2679: бинарный "<<": не найден оператор, принимающий правый операнд типа "std::string" (или приемлемое
эмулятор работы банкомата Например #include &quot;stdafx.h&quot; #include...

Ошибка C2679: бинарный '=': не найден оператор, принимающий правый операнд типа 'double'
// ConsoleApplication2.cpp : Defines the entry point for the console...

Шаблоны класса:Матрица. Ошибка бинарный "=": не найден оператор, принимающий правый операнд типа "Matr<T>"
Выдает ошибку &quot;бинарный &quot;=&quot;: не найден оператор, принимающий правый операнд...

6
zss
Модератор
Эксперт С++
6984 / 6546 / 4151
Регистрация: 18.12.2011
Сообщений: 17,271
Завершенные тесты: 1
15.05.2016, 19:27 #2
Цитата Сообщение от Vex788 Посмотреть сообщение
for (ptr = BoxElements.begin();
ptr должен иметь тип не vector<Table>::iterator а
vector<тот_тип_который_имеет_переменная_obj>::iterator

Какой именно, сказать не могу, т.к. не приведен код файла Table.h
0
Vex788
0 / 0 / 0
Регистрация: 01.12.2015
Сообщений: 54
15.05.2016, 19:44  [ТС] #3
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
31
32
#pragma once
#include <string>
#include <vector>
#include <stdlib.h>
using namespace std;
 
class Table
{
private:
    vector<Table> BoxElements;
    int num;
    string name;
    string symbol;
    string latinName;
    int perid;
    int group;
    double mass;
    int aem;
    double density;
    double temperature1;
    double temperature2;
    int year;
    vector<string> discoverer;
    string spelling;
public:
    Table();
    Table(string);
    ~Table(void);
    void set();
    void InFile(string);
    void OutElements();
} obj;
Добавлено через 7 минут
zss, а так
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
31
32
#pragma once
#include <string>
#include <vector>
#include <stdlib.h>
using namespace std;
 
class Table
{
private:
    vector<Table> BoxElements;
    int num;
    string name;
    string symbol;
    string latinName;
    int perid;
    int group;
    double mass;
    int aem;
    double density;
    double temperature1;
    double temperature2;
    int year;
    vector<string> discoverer;
    string spelling;
public:
    Table();
    Table(string);
    ~Table(void);
    void set();
    void InFile(string);
    void OutElements();
} obj;
0
zss
Модератор
Эксперт С++
6984 / 6546 / 4151
Регистрация: 18.12.2011
Сообщений: 17,271
Завершенные тесты: 1
15.05.2016, 22:19 #4
Вы не совсем понимаете принципы ООП.
Методы должны работать с экземпляром, для которого они вызваны, например
C++
1
2
3
4
5
6
7
8
9
10
11
void Table::InFile(string filename)
{
    ifstream fin(filename); 
    string str;
    int i = 0;
 
    while (!fin.eof())
    {
        fin >> this->num;
        fin >> this->name;
       ...
this-> естественно можно опускать.
и выводиться должен только ОДИН (*this) элемент
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void Table::OutElements()
{
        cout << num 
            << left << setw(5) << name 
            << left << setw(5) << symbol 
            << left << setw(5) << latinName
            << left << setw(5) << perid
            << left << setw(5) << group
            << left << setw(5) << mass
            << left << setw(5) << aem
            << left << setw(5) << density
            << left << setw(5) << temperature1
            << left << setw(5) << temperature2
            << left << setw(5) << year
            << left << setw(5) << spelling;
}
0
Vex788
0 / 0 / 0
Регистрация: 01.12.2015
Сообщений: 54
16.05.2016, 14:34  [ТС] #5
zss, а как тогда записать в вектор "BoxElements" все данные за раз?
C++
1
2
fin >> obj.spelling;//записываю в объект класса считанную из файла переменную
        BoxElements.push_back(obj);//записываю в вектор объект со всеми переменными которые записал
0
zss
Модератор
Эксперт С++
6984 / 6546 / 4151
Регистрация: 18.12.2011
Сообщений: 17,271
Завершенные тесты: 1
16.05.2016, 14:43 #6
Лучший ответ Сообщение было отмечено Vex788 как решение

Решение

Написать глобальную функцию (не член класса), которая в цикле запишет все элементы по очереди.
1
Vex788
0 / 0 / 0
Регистрация: 01.12.2015
Сообщений: 54
16.05.2016, 14:44  [ТС] #7
zss, Спасибо)
Я решил уже эту проблему использованием структуры и списком под нее.
0
16.05.2016, 14:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.05.2016, 14:44

Ошибка : бинарный "<<": не найден оператор, принимающий правый операнд типа point
В задаче нужно найти две наиболее удаленные друг от друга очки. выдает...

Error C2678: бинарный "<<": не найден оператор, принимающий левый операнд типа "std::ifstream"
Собственно, текст ошибки приведен в названии темы. Сам код: #include...

Error C2678: бинарный ">>": не найден оператор, принимающий левый операнд типа "std::istream"
Вот ошибка 1&gt;------ Построение начато: проект: ыпошряоям, Конфигурация: Debug...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru