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

Найти ошибку в определении класса

16.02.2017, 17:52. Просмотров 362. Ответов 21
Метки нет (Все метки)

Доброго дня. Имеется код. Ошибка на последних двух строчках
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class one
{
protected:
    int x;
 
public:
    one();
    int Getx();
};
one::one(){ x = 0 };
int one::Getx
{
    return x;
}
Где указано "x=0" не стоит точка с запятой, а следующую ошибку не смог найти.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.02.2017, 17:52
Ответы с готовыми решениями:

Исправить ошибки в определении шаблона класса
Подскажите пожалуйста как исправить эту ошибку template <class T> struct...

Decltype при определении возвращаемого типа в перегруженных операторах шаблонного класса
Для всех следующих примеров будет использован main(): #include <iostream> int...

Найти ошибку в объявлении класса
в чём дело? #include <iostream> #include <string> using namespace std;...

Найти ошибку в объявлении метода класса
Здравствуйте. Не могу понять, где ошибка и в чем она. И как следует писать...

Помогите найти ошибку в коде простого класса
Все мозги уже себе вынес, ничего не могу понять... Ошибка компиляции, текст...

21
Байт
Эксперт C
17938 / 11929 / 2478
Регистрация: 24.12.2010
Сообщений: 24,032
16.02.2017, 18:16 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class one
{
protected:
    int x;
 
public:
    one();
    int Getx();
};
one::one(){ x = 0 };
int one::Getx()  // Скобки
{
    return x;
}
1
eNerGy3
0 / 0 / 0
Регистрация: 04.02.2017
Сообщений: 72
16.02.2017, 18:29  [ТС] #3
В коде ошибка
C++
1
 int one::Setx{return x;}
Скобки не решают проблему.
0
nd2
2836 / 2403 / 1057
Регистрация: 29.01.2016
Сообщений: 8,042
16.02.2017, 18:33 #4
Цитата Сообщение от eNerGy3 Посмотреть сообщение
В коде ошибка
C++
1
int one::Setx{return x;}
Скобки не решают проблему.
Это, вообще, о чём? Setx у тебя откуда нарисовался? И скобок под параметры там опять нет.
0
Байт
Эксперт C
17938 / 11929 / 2478
Регистрация: 24.12.2010
Сообщений: 24,032
16.02.2017, 18:35 #5
Цитата Сообщение от eNerGy3 Посмотреть сообщение
В коде ошибка
В каком?
C++
1
 int one::Setx{return x;}
Тот же бред.
0
eNerGy3
0 / 0 / 0
Регистрация: 04.02.2017
Сообщений: 72
16.02.2017, 18:57  [ТС] #6
Этот бред указан на листке по экзамену.Дан кусок кода и нужно найти ошибку. Практикуюсь по-тихоньку. Вот так указано на листке.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class one
{
protected:
    int x;
 
public:
    one();
    int Getx();
};
one::one(){ x = 0 };
int one::Setx
{
    return x;
}
P.S. Значит две ошибки. Это ";" и "Setx" вместо "Getx()"

Добавлено через 13 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
class one{
protected:
int x;
int Getx();
public:
void Setx(int):
one(int);};
int main(){
one my1;
one my2(7);
cout<<my1.Get_a<<" "<<my2.Get_a();
return 0;

А здесь ошибка в 11строчке. Так должно быть? cout<<my1.Getx()<<" "<<my2.Getx();
0
Байт
Эксперт C
17938 / 11929 / 2478
Регистрация: 24.12.2010
Сообщений: 24,032
16.02.2017, 19:12 #7
Цитата Сообщение от eNerGy3 Посмотреть сообщение
Этот бред указан на листке по экзамену.Дан кусок кода и нужно найти ошибку.
Любопытный подход.
"Учитесь на чужих ошибках".
"Нам некогда ждать, когда вы сделаете ошибки! Давайте, мы сделаем их за вас!"
Не знаю... Отрицать огульно такой подход не могу. Но что-то мне не нравится...
Впрочем, педагогика, как и остальные науки, имеет право на эксперимент.
0
igdev
74 / 63 / 27
Регистрация: 22.04.2016
Сообщений: 359
Завершенные тесты: 3
16.02.2017, 19:35 #8
eNerGy3, А если попробовать вот так?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class one
{
protected:
    int x;
 
public:
    one();
    int Getx();
};
one::one(){ x = 0; };
int one::Getx()
{
    return x;
}
0
eNerGy3
0 / 0 / 0
Регистрация: 04.02.2017
Сообщений: 72
16.02.2017, 19:38  [ТС] #9
Не вижу здесь ничего плохого. Задание для будущего программиста. Он ведь обязан разбираться в чужом коде. Поэтому такие задачки в экзамене. На под.курсах изучаю в основном С ,а дома практикую С++(классы,объекты).

Добавлено через 1 минуту
Цитата Сообщение от igdev Посмотреть сообщение
eNerGy3, А если попробовать вот так?
Решили задачку. Смотрите мой пост выше.
0
igdev
74 / 63 / 27
Регистрация: 22.04.2016
Сообщений: 359
Завершенные тесты: 3
16.02.2017, 19:42 #10
eNerGy3,
Цитата Сообщение от eNerGy3 Посмотреть сообщение
P.S. Значит две ошибки. Это ";" и "Setx" вместо "Getx()"
Это и есть решение задачки?
0
eNerGy3
0 / 0 / 0
Регистрация: 04.02.2017
Сообщений: 72
16.02.2017, 19:51  [ТС] #11
Цитата Сообщение от igdev Посмотреть сообщение
Это и есть решение задачки?
Да. После этого, компилятор ошибку не выявил.
0
igdev
74 / 63 / 27
Регистрация: 22.04.2016
Сообщений: 359
Завершенные тесты: 3
16.02.2017, 19:55 #12
eNerGy3, Если компилятор не выдает ошибок, это не значит, что их нет вообще.

Добавлено через 2 минуты
По логике, если дана get-функция, то она должна возвращать значение переменной. В данном случаи Getx() возвращает значение переменной х.
Set-функция задает значение переменной и никак не может что-то возвращать.
1
eNerGy3
0 / 0 / 0
Регистрация: 04.02.2017
Сообщений: 72
16.02.2017, 19:57  [ТС] #13
Цитата Сообщение от igdev Посмотреть сообщение
Если компилятор не выдает ошибок, это не значит, что их нет вообще.
Согласен. Но в данном случае, нужно найти синтаксические ошибки/неточности. Т.к это не целая программа, а ее часть. И проверить потом его на ЭВМ не будет возможности. Поэтому хочу понять где именно искать ошибки.
0
igdev
74 / 63 / 27
Регистрация: 22.04.2016
Сообщений: 359
Завершенные тесты: 3
16.02.2017, 19:58 #14
В вашем решении имеются логические ошибки, а не синтаксические. Т.к. всегда set-функции задают значение переменным, а get-функции возвращают значение переменных. Но никак не наоборот.
0
eNerGy3
0 / 0 / 0
Регистрация: 04.02.2017
Сообщений: 72
16.02.2017, 20:05  [ТС] #15
А здесь какая ошибка?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class one
{
   protected:
         int x;
         int Getx();
   public:
   void Setx(int):
   one(int);
};
 
int main()
{
one my1;
one my2(7);
cout<<my1.Get_a<<" "<<my2.Get_a();
return 0;
}
0
igdev
74 / 63 / 27
Регистрация: 22.04.2016
Сообщений: 359
Завершенные тесты: 3
16.02.2017, 20:21 #16
eNerGy3, Вот так можно исправить.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class one
{
   protected:
         int x;
         int Getx();
   public:
   void Setx(int):
   one(int = 0); // Здесь поставить значение по умолчанию, в случаи, если не будет задано параметров
};
 
int main()
{
one my1;
one my2(7);
cout<<my1.Getx()<<" "<<my2.Getx(); // Здесь для первого обьекта при вызове Getx() поставить скобки
return 0;
}
Добавлено через 5 минут
Цитата Сообщение от eNerGy3 Посмотреть сообщение
А здесь какая ошибка?
Ну, и еще my1.Get_a заменить на my1.Getx(). Т.к. у нас нет метода Get_a().
0
eNerGy3
0 / 0 / 0
Регистрация: 04.02.2017
Сообщений: 72
16.02.2017, 20:24  [ТС] #17
Цитата Сообщение от igdev Посмотреть сообщение
one(int = 0);
Ошибка expected primary-expression before 'int'
0
igdev
74 / 63 / 27
Регистрация: 22.04.2016
Сообщений: 359
Завершенные тесты: 3
16.02.2017, 20:28 #18
eNerGy3,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class one
{
   protected:
         int x;
         int Getx();
   public:
   void Setx(int); // Вот здесь нужно поставить ";", вместо ":"
   one(int = 0); // Здесь поставить значение по умолчанию, в случаи, если не будет задано параметров
};
 
int main()
{
one my1;
one my2(7);
cout<<my1.Getx()<<" "<<my2.Getx(); // Здесь для первого обьекта при вызове Getx() поставить скобки
return 0;
}
0
eNerGy3
0 / 0 / 0
Регистрация: 04.02.2017
Сообщений: 72
16.02.2017, 20:37  [ТС] #19
Цитата Сообщение от igdev Посмотреть сообщение
int Getx();
Метод находится в protected из-за этого она не будет работать в майне.
0
igdev
74 / 63 / 27
Регистрация: 22.04.2016
Сообщений: 359
Завершенные тесты: 3
16.02.2017, 20:46 #20
eNerGy3, Если уже исправлять, то уже полностью. Т.к. потом компилятор будет ругаться, что методы класса не определены.
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
class one
{
protected:
    int x;
    
public:
    int Getx();
    void Setx(int); // Вот здесь нужно поставить ";", вместо ":"
    one(int = 0); // Здесь поставить значение по умолчанию, в случаи, если не будет задано параметров
};
 
one::one(int value)
{
    Setx(value);
}
 
void one::Setx(int value)
{
    x = value;
}
 
int one::Getx()
{
    return x;
}
 
int main()
{
    one my1;
    one my2(7);
    cout << my1.Getx() << " " << my2.Getx(); // Здесь для первого обьекта при вызове Getx() поставить скобки
    return 0;
}
1
16.02.2017, 20:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.02.2017, 20:46

Найти ошибку в заполнении полей класса по указателю
а здесь у меня с указателем не получается никак Задание такое же тоже в 3...

Помогите найти ошибку с деструктором при создание класса Матрица
Возникла проблема с деструктором, во время выполнения. #include&lt;iomanip&gt;...

Ошибка при определении класса: undefiner symbol t1,t2,t3,t4 t1 is not a mamber "figura"
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;graphics.h&gt; #include...


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

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

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