Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
Natrix
5 / 5 / 1
Регистрация: 21.12.2009
Сообщений: 26
1

Работа с классами в С++

22.05.2011, 22:45. Просмотров 1423. Ответов 11
Метки нет (Все метки)

Доброго всем дня.У меня возникла проблема с освоением языка C++ , сейчас пишу курсовую на этом языке, и ещё не совсем всё понимаю, но книги читаю. В основном "Кериганн и Ричи Философия С и С++"
При составлении простой программы. где в функции main идёт обращение к классу, после чего тот класс обращаеть к другому, я получил ошибки такого типа :
1) class.h:9: error: `StartData' does not name a type

2) class.h:7: error: `startData' undeclared (first use this function)

и предупреждение

3)class.h:7: warning: no return statement in function returning non-void

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

файл main.cpp

C++
1
2
3
4
5
6
7
#include <iostream>
#include "class.h"
 
int main() {    
        FlyBullet flybullet;
        return flybullet.run();
}
и файл class.h
Код C++
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
using namespace std;
 
class FlyBullet { 
public:
        FlyBullet();
        ~FlyBullet();
        int run() { startData.inputData(); }
private:
        StartData startData;
};
 
class Object { };
 
class StartData {
public:
        int inputData() { inputSpeed(); inputAngle(); inputWind(); }
private:
        void inputSpeed() { cout << "enter speed: "; cin >> startSpeed; }
        void inputWind() { cout << "enter wind speed: "; cin >> windSpeed; }
        void inputAngle() { cout << "enter angle: "; cin >> startAngle; }
        int startSpeed,windSpeed,startAngle;
};
P.S
не обращайте внимание на то что бессмысленно вызываю конструктор и деструктор класса, это чисто тренировка.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.05.2011, 22:45
Ответы с готовыми решениями:

Работа С Классами
Привет Всем , Перехожу С делфи ))) Вот никак не пойму Вот Эту хрень в нутри...

Работа с классами
Помогите плз Определите значение переменных а, х, с после выполнения...

Работа с классами
Имеется заголовочный файл В нем создаю два класса Vector и MyCamera. class...

Работа с классами
Ввести прямоугольную матрицу. Элементами матрицы являются символы. Пользователь...

Работа с классами
Добрый день, помогите написать программу которая создаёт класс Bool –...

11
vlad_ltd
3 / 3 / 1
Регистрация: 30.04.2011
Сообщений: 51
22.05.2011, 22:54 2
C++
1
2
3
4
int main() {    
        FlyBullet flybullet;
        return flybullet.run();
}
Функция мэйн это основное тело программы, несмотря на то что она int, возвращает main всегда 0

C++
1
return 0;
А вот функция класс StartData, int inputData() - должна, просто обязана выдавать значение типа int
Так же функция класса FlyBullet, int run() должна выдать значение int

Зачем ты сделал функции inputSpeed(); inputAngle(); inputWind(); private если нет методов их вызвать?
Тут одно из двух, либо делай их public, либо пиши public функции которые будут их доставать.
1
Natrix
5 / 5 / 1
Регистрация: 21.12.2009
Сообщений: 26
22.05.2011, 22:56  [ТС] 3
Цитата Сообщение от vlad_ltd Посмотреть сообщение
int main() { FlyBullet flybullet; return flybullet.run(); }
То что возвращает она 0, это ясно, но я тут хотел вызвать класс с функцией run();
0
PointsEqual
ниначмуроФ
840 / 524 / 110
Регистрация: 12.10.2009
Сообщений: 1,915
22.05.2011, 23:01 4
Цитата Сообщение от Natrix Посмотреть сообщение
3)class.h:7: warning: no return statement in function returning non-void
скорее всего потомучто функция должна возвращать int а ничего не возвращает



Добавлено через 26 секунд
Цитата Сообщение от vlad_ltd Посмотреть сообщение
Функция мэйн это основное тело программы, несмотря на то что она int, возвращает main всегда 0
не всегда

Добавлено через 3 минуты
поменяйте классы местами и все заработает
1
Natrix
5 / 5 / 1
Регистрация: 21.12.2009
Сообщений: 26
22.05.2011, 23:05  [ТС] 5
Цитата Сообщение от vlad_ltd Посмотреть сообщение
А вот функция класс StartData, int inputData() - должна, просто обязана выдавать значение типа int
так она это и делает, ведь в функции int inputData() все функции и передают int;

Добавлено через 2 минуты
Цитата Сообщение от PointsEqual Посмотреть сообщение
поменяйте классы местами и все заработает
я сейчас обязательно это пробую сделать, спасибо за помощь, но этот маленький кусочек программы построен по Иерархии наследования (UML) и может привести к не полодкам в самой структуре таблице, но всеравно спасибо
0
vlad_ltd
3 / 3 / 1
Регистрация: 30.04.2011
Сообщений: 51
22.05.2011, 23:07 6
все я понял, сначало не углядел, извени. Но все равно функция int inputData() должна содержать rteturn, так же как и int run()
1
PointsEqual
ниначмуроФ
840 / 524 / 110
Регистрация: 12.10.2009
Сообщений: 1,915
22.05.2011, 23:07 7
а кто тут наследуется?
1
Natrix
5 / 5 / 1
Регистрация: 21.12.2009
Сообщений: 26
22.05.2011, 23:16  [ТС] 8
Цитата Сообщение от vlad_ltd Посмотреть сообщение
Зачем ты сделал функции inputSpeed(); inputAngle(); inputWind(); private если нет методов их вызвать?
Тут одно из двух, либо делай их public, либо пиши public функции которые будут их доставать.
это метод инкапсуляции, только класс StarData может использовать их, и никто другой

Добавлено через 1 минуту
а вызывает их именно int inputData() где саму эту функцию вызывает run()

Добавлено через 1 минуту
Цитата Сообщение от PointsEqual Посмотреть сообщение
а кто тут наследуется?
не корректно понял вопрос, наследований тут нет

Добавлено через 5 минут
Цитата Сообщение от vlad_ltd Посмотреть сообщение
Но все равно функция int inputData() должна содержать rteturn, так же как и int run()
попробывал написать в классе
C++
1
return startSpeed,windSpeed,startAngle;
и в итоге получил следующию ошибку

class.h:11: error: expected unqualified-id before "return"

возможно правильней написать чтоб саму функцию возвращало?

вы уж извините глупый я ещё в ООП
0
PointsEqual
ниначмуроФ
840 / 524 / 110
Регистрация: 12.10.2009
Сообщений: 1,915
22.05.2011, 23:19 9
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
#include <iostream>
 
using namespace std;
 
 
 
 
 
class Object { };
 
class StartData {
public:
        int inputData() { inputSpeed(); inputAngle(); inputWind(); }
private:
        void inputSpeed() { cout << "enter speed: "; cin >> startSpeed; }
        void inputWind() { cout << "enter wind speed: "; cin >> windSpeed; }
        void inputAngle() { cout << "enter angle: "; cin >> startAngle; }
        int startSpeed,windSpeed,startAngle;
};
 
 
class FlyBullet {
public:
        FlyBullet(){};
        ~FlyBullet(){};
        int run() { startData.inputData(); }
private:
        StartData startData;
};
 
 
int main()
{
            FlyBullet flybullet;
        return flybullet.run();
    return 0;
}
class FlyBullet - нужно было еще определить конструктор и деструктор
1
Natrix
5 / 5 / 1
Регистрация: 21.12.2009
Сообщений: 26
22.05.2011, 23:24  [ТС] 10
Цитата Сообщение от PointsEqual Посмотреть сообщение
class FlyBullet - нужно было еще определить конструктор и деструктор
спасибо большое)) теперь ясно почему он ругался)

но меня настраживает 4 ошибки одного типа, no return statement in function returning non-void , это в каждом классе нужно прописывать то что он возвращает? тоесть, возвращать сами функции которые вызываются?
0
PointsEqual
ниначмуроФ
840 / 524 / 110
Регистрация: 12.10.2009
Сообщений: 1,915
22.05.2011, 23:37 11
тут функции ничего не возвращают, поменяйте int На void
0
vlad_ltd
3 / 3 / 1
Регистрация: 30.04.2011
Сообщений: 51
23.05.2011, 00:30 12
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
#include <iostream>
 
using namespace std;
class Object { };
class StartData {
public:
    StartData(){}
        void inputData() {inputSpeed(); inputAngle(); inputWind(); }
private:
        void inputSpeed() { cout << "enter speed: "; cin >> startSpeed; }
        void inputWind() { cout << "enter wind speed: "; cin >> windSpeed; }
        void inputAngle() { cout << "enter angle: "; cin >> startAngle; }
        int startSpeed,windSpeed,startAngle;
};
 
 
class FlyBullet {
public:
        FlyBullet(){};
        ~FlyBullet(){};
        void run() { startData.inputData(); }
private:
        StartData startData;
};
 
 
int main()
{
       FlyBullet flybullet;
       flybullet.run();
    return 0;
}
Так все работает
0
23.05.2011, 00:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.05.2011, 00:30

Работа с классами
Привет всем!!!!! Пацаны помогите написать программу плиз, на завтро нужно!!!!!...

Работа с классами
Почему может вывестись здесь ошибка? #include &lt;iostream&gt; #include &lt;stdlib.h&gt;...

работа с классами
помогите пожалуйста написать программу на C++: Создать класс Complex для...


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

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

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