Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/14: Рейтинг темы: голосов - 14, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 23.11.2019
Сообщений: 21
1

Ошибка в коде, не могу понять причину

16.12.2019, 19:51. Показов 2620. Ответов 16

Author24 — интернет-сервис помощи студентам
Ошибка в строчке 67: 'p.MESWERT::getEinheit' does not have class type. В чем причина?

C++ (Qt)
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 <cassert>
#include <iostream>
#include <vector>
#include <string>
 
using namespace std;
 
class MESSWERT
{
private:
    double wert;
    string einheit;
public:
    MESSWERT (double w=0, string e = ""); //konstruktor
    MESSWERT (const MESSWERT &m); //kopiekostruktor
    void setMesswert (double w, string e); //setter
    double getWert(); //getter
    string getEinheit(); //getter?
    void print();
};
 
//kostruktor initialisation
MESSWERT::MESSWERT (double w, string e)
{
    this->wert =w;
    this->einheit = e;
}
 
//kopiekonstructor initialisation
MESSWERT::MESSWERT (const MESSWERT &m)
{
    this->wert = m.wert;
    this->einheit = m.einheit;
}
 
//getter
string MESSWERT::getEinheit()
{
    return this->einheit;
}
 
//setter
void MESSWERT::setMesswert(double w, string e)
{
    this->einheit = e;
}
 
void MESSWERT::print()
{
    cout << this->wert << " = " << this->einheit << endl;
}
 
int main()
{
    MESSWERT mo1(20, "uA");
    MESSWERT mo2(10, "kV");
}
 
//Methode ohne Parameter zu Normierung
int normieren(MESSWERT &p)
{
   // string str_temp = p.getEinheit();
    if (p.getEinheit() == "A" || p.getEinheit() == "V" || p.getEinheit() == "W")
    {
        return 0;
    }
    if (p.getEinheit.length() != 2 || p.getEinheit[1] != 'A' && p.getEinheit[1] != 'V' && p.getEinheit[1] != 'W')
    {
        return 42;
    }
    switch (p.getEinheit[0])
    {
    case 'n':
        p.getWert() *= 0.000000001;
        break;
    case 'u':
        p.getWert() *= 0.000001;
        break;
    case 'm':
        p.getWert() *= 0.001;
        break;
    case 'k':
        p.getWert() *= 1000.;
        break;
    case 'M':
        p.getWert() *= 1000000;
        break;
    default:
        return 42;
    }
    p.getEinheit = p.getEinheit.substr(1);
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.12.2019, 19:51
Ответы с готовыми решениями:

Где ошибка в коде?Не могу понять
#include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; int main() { setlocale(0, &quot;&quot;); ...

Ошибка в коде не могу понять где!?
В конце когда нажимаю 6 - Открыть файл данных выводит Данные файла: Неправильно указано число...

Не могу понять что за ошибка в коде
Вот код: #include &lt;iostream&gt; using namespace std; void main() { setlocale(0, &quot;ru&quot;); ...

Не могу понять где ошибка в коде
я сейчас читаю книгу и там задание: Напишите цикл for, который изменяет массив животных, делая их...

16
Диссидент
Эксперт C
27709 / 17325 / 3811
Регистрация: 24.12.2010
Сообщений: 38,979
16.12.2019, 19:56 2
Это функция (метод)
C++
1
if (p.getEinheit.length() != 2 || p.getEinheit()[1] != 'A' && p.getEinheit()[1] != 'V' && p.getEinheit()[1] != 'W')
1
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,884
Записей в блоге: 1
16.12.2019, 19:56 3
Цитата Сообщение от etaaaaaa Посмотреть сообщение
В чем причина?
C++
1
p.getEinheit()[1]
1
Диссидент
Эксперт C
27709 / 17325 / 3811
Регистрация: 24.12.2010
Сообщений: 38,979
16.12.2019, 20:00 4
Но вообще-то, довольно глупо каждый раз метод вызыать. Я бы сделал так
C++
1
2
string Einh = p.getEinheit();
// и уж дальше его анализировать, этот Einh, чтобы это не значило...
0
0 / 0 / 0
Регистрация: 23.11.2019
Сообщений: 21
16.12.2019, 20:00  [ТС] 5
Байт _stanislav Спасибо, поправила, но все равно выдает ту же ошибку
0
Диссидент
Эксперт C
27709 / 17325 / 3811
Регистрация: 24.12.2010
Сообщений: 38,979
16.12.2019, 20:04 6
Лучший ответ Сообщение было отмечено etaaaaaa как решение

Решение

Не по теме:

_stanislav, наши точки зрения совпали :)



Добавлено через 2 минуты
Цитата Сообщение от etaaaaaa Посмотреть сообщение
все равно выдает ту же ошибку
Угу! Не до конца просканировал усталым взглядом эту длинную строка. Но можно было бы и догадаться по аналогии
C++
1
p.getEinheit().length()
0
0 / 0 / 0
Регистрация: 23.11.2019
Сообщений: 21
16.12.2019, 20:09  [ТС] 7
Байт Удивительно, заработало. Не догадалась, потому что в классе почему то учитель в аналогичной задаче так не делал, но видимо я чето не поняла в этой жизни. Спасибо!

Но только там еще ошибки в строке 71 - <invalid types '<unresolved overloaded function type>[int]' for array subscript
и в строках 74, 77, 80, 83, 86, 91 - 1value required as left operand of assignment

Не знаете почему?
0
Диссидент
Эксперт C
27709 / 17325 / 3811
Регистрация: 24.12.2010
Сообщений: 38,979
16.12.2019, 20:21 8
Лучший ответ Сообщение было отмечено etaaaaaa как решение

Решение

Цитата Сообщение от etaaaaaa Посмотреть сообщение
switch (p.getEinheit[0])
Тоже самое.

Добавлено через 2 минуты
Цитата Сообщение от etaaaaaa Посмотреть сообщение
p.getWert() *= 0.000000001;
Запишем подробнее
C++
1
p.getWert() = p.getWert() * 0.000000001;
Как же ты функции значение присваиваешь?

Добавлено через 3 минуты
Нужен сеттер (setWert(double w))
и тогда так
C++
1
p.setWert(p.getWert() * 0.000000001);
1
0 / 0 / 0
Регистрация: 23.11.2019
Сообщений: 21
16.12.2019, 20:27  [ТС] 9
Байт Угу, спасибо, но я вот даже если подробнее расписала, то ошибка 1value required as left operand of assignment все рано остается

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
switch (p.getEinheit()[0])
    {
    case 'n':
        p.getWert() = p.getWert() 0.000000001;
        break;
    case 'u':
        p.getWert() = p.getWert() 0.000001;
        break;
    case 'm':
        p.getWert() = p.getWert() 0.001;
        break;
    case 'k':
        p.getWert() = p.getWert() 1000.;
        break;
    case 'M':
        p.getWert() = p.getWert() 1000000;
        break;
    default:
        return 42;
не злитесь пожалуйста, я совсем новичок (
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,884
Записей в блоге: 1
16.12.2019, 20:34 10
Лучший ответ Сообщение было отмечено etaaaaaa как решение

Решение

Не по теме:

Цитата Сообщение от Байт Посмотреть сообщение
наши точки зрения совпали :)
ага, блин, не люблю плагиат, обычно обновляю страницу перед ответом :)



Добавлено через 2 минуты
Цитата Сообщение от etaaaaaa Посмотреть сообщение
ошибка 1value required as left operand of assignment все рано остается
тебе же писали нужен сетер, вместо:
C++
1
p.getWert() = p.getWert() 0.000000001;
нужно
C++
1
p.setWert(p.getWert() * 0.000000001);
Добавлено через 3 минуты
Цитата Сообщение от etaaaaaa Посмотреть сообщение
не злитесь пожалуйста, я совсем новичок
новичок, а уже залез в нетривиальные конструкции и утонул
1
0 / 0 / 0
Регистрация: 23.11.2019
Сообщений: 21
16.12.2019, 20:43  [ТС] 11
_stanislav сорян, делаю, что в универе скажут((
Спасибо, помогло!

Добавлено через 7 минут
_stanislav Байт если сделать так:

C++ (Qt)
1
2
3
4
5
switch (p.getEinheit()[0])
    {
    case 'n':
        p.setMesswert(p.setMesswert() * 0.000000001);
        break;
то говорит no matching function for call to 'MESSWERT::setMesswert()
0
Диссидент
Эксперт C
27709 / 17325 / 3811
Регистрация: 24.12.2010
Сообщений: 38,979
16.12.2019, 20:49 12
Цитата Сообщение от etaaaaaa Посмотреть сообщение
ошибка 1value required as left operand of assignment все рано остается
Все было сказано в посте 8. И уважаемый _stanislav это подтвердил.
Цитата Сообщение от etaaaaaa Посмотреть сообщение
помогло!
Ну и слава Богу! Рад за тебя! Удачи!

Не по теме:

Цитата Сообщение от _stanislav Посмотреть сообщение
ага, блин, не люблю плагиат
Все ok! На то и площадь (форум по грецки). Все шумят, толкаются, бормочут.. Не комплексуй!:)



Добавлено через 2 минуты

Не по теме:

_stanislav, Больше не буду тебе мешать. Учи девчонку сам. Я уже пас!

0
0 / 0 / 0
Регистрация: 23.11.2019
Сообщений: 21
16.12.2019, 20:54  [ТС] 13
Байт какой вы нервный
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,884
Записей в блоге: 1
16.12.2019, 20:56 14
Цитата Сообщение от etaaaaaa Посмотреть сообщение
no matching function for call to 'MESSWERT::setMesswert()
он говорит нет такой функции, ты что прикалываешься нужно внимательней быть.
C++
1
2
3
4
5
switch (p.getEinheit()[0])
    {
    case 'n':
        p.setWert(p.getWert() * 0.000000001);
        break;
Добавлено через 34 секунды
Цитата Сообщение от etaaaaaa Посмотреть сообщение
какой вы нервный
нормальный он, тебе показалось.
1
0 / 0 / 0
Регистрация: 23.11.2019
Сообщений: 21
16.12.2019, 21:08  [ТС] 15
_stanislav Я очень извиняюсь за настойчивость, но вот как раз нет функции setWert, есть только setMesswert

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
class MESSWERT
{
private:
    double wert;
    string einheit;
public:
    MESSWERT (double w=0, string e = ""); //konstruktor
    MESSWERT (const MESSWERT &m); //kopiekostruktor
    void setMesswert (double w, string e); //setter
    double getWert(); //getter
    string getEinheit(); //getter?
    void print();
};
Если вы про это, конечно. А так у меня уже давно стоит

C++ (Qt)
1
2
3
4
5
switch (p.getEinheit()[0])
    {
    case 'n':
        p.setMesswert(p.getWert() * 0.000000001);
        break;
и он все равно говорит вот эту ошибку
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,884
Записей в блоге: 1
16.12.2019, 21:14 16
Цитата Сообщение от etaaaaaa Посмотреть сообщение
и он все равно говорит вот эту ошибку
да, я тоже не внимательный, но у тебя функция void setMesswert (double w, string e) принимает два параметра, а ты передаешь один, где второй? он должен быть string, он вообще нужен?

Добавлено через 2 минуты
если во второй параметр пустая строка заноситься можно так написать:
C++
1
p.setMesswert(p.getWert() * 0.000000001, "");
1
0 / 0 / 0
Регистрация: 23.11.2019
Сообщений: 21
16.12.2019, 21:20  [ТС] 17
_stanislav Вы мой герой! Спасибо, работает!
0
16.12.2019, 21:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.12.2019, 21:20
Помогаю со студенческими работами здесь

Не могу понять в чем ошибка в коде
Помогите разобраться, ошибка в коде map.put('1', new Instruction(&quot; &gt;1&quot;)); Вот весь код /* ...

Ошибка в коде не могу понять в чем
Вот код программы: #include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; int main() { ...

Не могу понять где ошибка в коде
Добрый день! Меняю стоимость товара с помощью кода, но все равно не выдает правильную цену, не могу...

Не могу понять причину
&lt;script type=&quot;text/JavaScript&quot; src=&quot; {% static 'js/cloud-carousel.1.0.5.js' %}&quot;&gt;&lt;/script&gt; ...

Не могу понять в где ошибка в Java коде
Помогите пожалуйста. изучаю Java по книге там такой код. //Использование цыкла do-while для...

Ошибка в коде, не могу понять что делать
//--------------------------------------------------------------------------- #include &lt;vcl.h&gt;...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru