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

Разобраться с ошибками в коде - C++

Восстановить пароль Регистрация
 
levgen
 Аватар для levgen
3 / 3 / 2
Регистрация: 07.02.2013
Сообщений: 185
31.08.2015, 17:48     Разобраться с ошибками в коде #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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#include "stdafx.h"
#include "string"
 
using namespace std;
 
class Student {
private:
    #ifdef UNICODE
        wstring firstName;
        wstring lastName;
        wstring secondName;
    #else
        string firstName;
        string lastName;
        string secondName;
    #endif
    int birthYear;
    double averageMark;
 
    int compare(Student* student) {
        int result = this->firstName.compare(student->firstName);
        if(result == 0) {
            result = this->lastName.compare(student->lastName);
            if(result == 0) {
                result = this->secondName.compare(student->secondName);
            }
        }
 
        return result;
    }
 
public:
    Student() {
        this->firstName = "";
        this->lastName = "";
        this->secondName = "";
        this->birthYear = 0;
        this->averageMark = 0.0;
    }
 
    Student(string firstName, string lastName, string secondName, int birthYear, double averageMark) {
        this->firstName = firstName;
        this->lastName = lastName;
        this->secondName = secondName;
        this->birthYear = birthYear;
        this->averageMark = averageMark;
    }
 
    Student(Student& student) {
        *this = student;
    }
 
    Student& operator=(Student& student) {
        this->firstName = student.firstName;
        this->lastName = student.lastName;
        this->secondName = student.secondName;
        this->birthYear = student.birthYear;
        this->averageMark = student.averageMark;
        return *this;
    }
 
    bool operator==(Student* student) {
        return this->compare(student) == 0;
    }
 
    bool operator!=(Student* student) {
        return this->compare(student) != 0;
    }
 
    bool operator>(Student* student) {
        return this->compare(student) > 0;
    }
 
    bool operator<(Student* student) {
        return this->compare(student) < 0;
    }
 
    bool operator>=(Student* student) {
        return this->compare(student) >= 0;
    }
 
    bool operator<=(Student* student) {
        return this->compare(student) <= 0;
    }
 
    string getFirstName() {
        return firstName;
    }
 
    string getLastName() {
        return lastName;
    }
 
    string getSecondName() {
        return secondName;
    }
 
    int getBirthYear() {
        return birthYear;
    }
 
    double getAverageMark() {
        return averageMark;
    }
 
    void setFirstName(string firstName) {
        this->firstName = firstName;
    }
 
    void setLastName(string lastName) {
        this->lastName = lastName;
    }
 
    void setSecondName(string secondName) {
        this->secondName = secondName;
    }
 
    void setBirthYear(int birthYear) {
        this->birthYear = birthYear;
    }
 
    void setAverageMark(double averageMark) {
        this->averageMark = averageMark;
    }
 
};
Добавлено через 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
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
1>------ Построение начато: проект: Проект1, Конфигурация: Debug Win32 ------
1>  mpi1.cpp
1>d:\сип\проект1\проект1\student.h(34): error C2679: бинарный "=": не найден оператор, принимающий правый операнд типа "const char [1]" (или приемлемое преобразование отсутствует)
1>          c:\program files (x86)\microsoft visual studio 11.0\vc\include\xstring(912): может быть "std::basic_string<_Elem,_Traits,_Alloc> &std::basic_string<_Elem,_Traits,_Alloc>::operator =(std::basic_string<_Elem,_Traits,_Alloc> &&) throw()"
1>          with
1>          [
1>              _Elem=wchar_t,
1>              _Traits=std::char_traits<wchar_t>,
1>              _Alloc=std::allocator<wchar_t>
1>          ]
1>          c:\program files (x86)\microsoft visual studio 11.0\vc\include\xstring(969): или       "std::basic_string<_Elem,_Traits,_Alloc> &std::basic_string<_Elem,_Traits,_Alloc>::operator =(const std::basic_string<_Elem,_Traits,_Alloc> &)"
1>          with
1>          [
1>              _Elem=wchar_t,
1>              _Traits=std::char_traits<wchar_t>,
1>              _Alloc=std::allocator<wchar_t>
1>          ]
1>          c:\program files (x86)\microsoft visual studio 11.0\vc\include\xstring(987): или       "std::basic_string<_Elem,_Traits,_Alloc> &std::basic_string<_Elem,_Traits,_Alloc>::operator =(const _Elem *)"
1>          with
1>          [
1>              _Elem=wchar_t,
1>              _Traits=std::char_traits<wchar_t>,
1>              _Alloc=std::allocator<wchar_t>
1>          ]
1>          c:\program files (x86)\microsoft visual studio 11.0\vc\include\xstring(992): или       "std::basic_string<_Elem,_Traits,_Alloc> &std::basic_string<_Elem,_Traits,_Alloc>::operator =(_Elem)"
1>          with
1>          [
1>              _Elem=wchar_t,
1>              _Traits=std::char_traits<wchar_t>,
1>              _Alloc=std::allocator<wchar_t>
1>          ]
1>          при попытке сопоставить список аргументов "(std::wstring, const char [1])"
1>d:\сип\проект1\проект1\student.h(35): error C2679: бинарный "=": не найден оператор, принимающий правый операнд типа "const char [1]" (или приемлемое преобразование отсутствует)
1>          c:\program files (x86)\microsoft visual studio 11.0\vc\include\xstring(912): может быть "std::basic_string<_Elem,_Traits,_Alloc> &std::basic_string<_Elem,_Traits,_Alloc>::operator =(std::basic_string<_Elem,_Traits,_Alloc> &&) throw()"
1>          with
1>          [
1>              _Elem=wchar_t,
1>              _Traits=std::char_traits<wchar_t>,
1>              _Alloc=std::allocator<wchar_t>
1>          ]
1>          c:\program files (x86)\microsoft visual studio 11.0\vc\include\xstring(969): или       "std::basic_string<_Elem,_Traits,_Alloc> &std::basic_string<_Elem,_Traits,_Alloc>::operator =(const std::basic_string<_Elem,_Traits,_Alloc> &)"
1>          with
1>          [
1>              _Elem=wchar_t,
1>              _Traits=std::char_traits<wchar_t>,
1>              _Alloc=std::allocator<wchar_t>
1>          ]
1>          c:\program files (x86)\microsoft visual studio 11.0\vc\include\xstring(987): или       "std::basic_string<_Elem,_Traits,_Alloc> &std::basic_string<_Elem,_Traits,_Alloc>::operator =(const _Elem *)"
1>          with
1>          [
1>              _Elem=wchar_t,
1>              _Traits=std::char_traits<wchar_t>,
1>              _Alloc=std::allocator<wchar_t>
1>          ]
1>          c:\program files (x86)\microsoft visual studio 11.0\vc\include\xstring(992): или       "std::basic_string<_Elem,_Traits,_Alloc> &std::basic_string<_Elem,_Traits,_Alloc>::operator =(_Elem)"
1>          with
1>          [
1>              _Elem=wchar_t,
1>              _Traits=std::char_traits<wchar_t>,
1>              _Alloc=std::allocator<wchar_t>
1>          ]
И ТАК ДАЛЕЕ
1>          при попытке сопоставить список аргументов "(std::wstring, std::string)"
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.08.2015, 17:48     Разобраться с ошибками в коде
Посмотрите здесь:

C++ нужно разобраться в коде
C++ разобраться с ошибками
Разобраться с ошибками C++
C++ Не могу разобраться с ошибками, наследование и шаблоны
C++ Как разобраться с ошибками в коде
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kerry_Jr
Модератор
 Аватар для Kerry_Jr
1868 / 1664 / 580
Регистрация: 14.05.2014
Сообщений: 4,777
Записей в блоге: 1
Завершенные тесты: 5
31.08.2015, 18:14     Разобраться с ошибками в коде #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
levgen,
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#include <string>
#include <windows.h>
 
using namespace std;
 
class Student {
private:
    #ifdef UNICODE
       typedef std::wstring my_string;
    #else
       typedef std::string my_string;
    #endif
    my_string firstName;
    my_string lastName;
    my_string secondName;
    int birthYear;
    double averageMark;
 
    int compare(Student* student) {
        int result = this->firstName.compare(student->firstName);
        if(result == 0) {
            result = this->lastName.compare(student->lastName);
            if(result == 0) {
                result = this->secondName.compare(student->secondName);
            }
        }
 
        return result;
    }
 
public:
    Student() {
        this->firstName = TEXT("");
        this->lastName = TEXT("");
        this->secondName = TEXT("");
        this->birthYear = 0;
        this->averageMark = 0.0;
    }
 
    Student(my_string firstName, my_string lastName, my_string secondName, int birthYear, double averageMark) {
        this->firstName = firstName;
        this->lastName = lastName;
        this->secondName = secondName;
        this->birthYear = birthYear;
        this->averageMark = averageMark;
    }
 
    Student(Student& student) {
        *this = student;
    }
 
    Student& operator=(Student& student) {
        this->firstName = student.firstName;
        this->lastName = student.lastName;
        this->secondName = student.secondName;
        this->birthYear = student.birthYear;
        this->averageMark = student.averageMark;
        return *this;
    }
 
    bool operator==(Student* student) {
        return this->compare(student) == 0;
    }
 
    bool operator!=(Student* student) {
        return this->compare(student) != 0;
    }
 
    bool operator>(Student* student) {
        return this->compare(student) > 0;
    }
 
    bool operator<(Student* student) {
        return this->compare(student) < 0;
    }
 
    bool operator>=(Student* student) {
        return this->compare(student) >= 0;
    }
 
    bool operator<=(Student* student) {
        return this->compare(student) <= 0;
    }
 
    my_string getFirstName() {
        return firstName;
    }
 
    my_string getLastName() {
        return lastName;
    }
 
    my_string getSecondName() {
        return secondName;
    }
 
    int getBirthYear() {
        return birthYear;
    }
 
    double getAverageMark() {
        return averageMark;
    }
 
    void setFirstName(my_string firstName) {
        this->firstName = firstName;
    }
 
    void setLastName(my_string lastName) {
        this->lastName = lastName;
    }
 
    void setSecondName(my_string secondName) {
        this->secondName = secondName;
    }
 
    void setBirthYear(int birthYear) {
        this->birthYear = birthYear;
    }
 
    void setAverageMark(double averageMark) {
        this->averageMark = averageMark;
    }
 
};
Enno
265 / 168 / 38
Регистрация: 25.08.2014
Сообщений: 1,088
Записей в блоге: 1
31.08.2015, 18:24     Разобраться с ошибками в коде #3
Цитата Сообщение от levgen Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
#ifdef UNICODE
 wstring firstName; 
wstring lastName; 
wstring secondName;
#else 
string firstName;
 string lastName; 
string secondName; 
#endif
А чоб не определить tstring?
levgen
 Аватар для levgen
3 / 3 / 2
Регистрация: 07.02.2013
Сообщений: 185
31.08.2015, 18:33  [ТС]     Разобраться с ошибками в коде #4
Enno, без понятия, в теории я слаб
Yandex
Объявления
31.08.2015, 18:33     Разобраться с ошибками в коде
Ответ Создать тему
Опции темы

Текущее время: 23:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru