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

Разбиение проекта на .h - C++

Восстановить пароль Регистрация
 
Seroo
 Аватар для Seroo
59 / 59 / 4
Регистрация: 22.12.2011
Сообщений: 972
11.11.2012, 01:12     Разбиение проекта на .h #1
Эсть класс А от его наследую класс Б, в .h пишу
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#ifndef  B_H
#define B_H
#include "A.h"
class B:public A{ ......}
 
#endif  B_H
в main()
 
.....
using namespace std;
#include "B.h"  //здесь ошибки
 
void main(){
B obj;         
obj.Show();} // етот метод есть в класе Б
как же реализовать надо в .h при наследовании ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2012, 01:12     Разбиение проекта на .h
Посмотрите здесь:

Разбиение на лексемы C++
scanf. Разбиение. C++
Разбиение на слагаемые C++
Разбиение проекта на файлы C++
C++ QR -разбиение
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.11.2012, 02:41     Разбиение проекта на .h #2
Что за ошибки? И не видно, что в .h файлах.
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
11.11.2012, 05:01     Разбиение проекта на .h #3
Цитата Сообщение от Seroo Посмотреть сообщение
#endif B_H
А это зачем? Не знаю, может ли текст после #endif вызвать ошибку, мне никогда и в голову не приходило так писать
Цитата Сообщение от Seroo Посмотреть сообщение
void main()
int main корректнее, но ошибку не всякий компилятор выдаст.

Цитата Сообщение от Seroo Посмотреть сообщение
using namespace std;
#include "B.h"
лучше поменяй местами. Препроцессор подставит B.h и неймспейс будет распространяться на него.

Цитата Сообщение от Seroo Посмотреть сообщение
class B: public A{ ......}
У тебя точно точки с запятой после } не стоит? Тогда это ошибка. Поставь ;
После } должен идти (пустой или нет)список объявляемых переменных, завершаемый точкой с запятой, иначе компилятор ищет объявление переменных, зачастую в CPP файлах, в которые включён B.h
Seroo
 Аватар для Seroo
59 / 59 / 4
Регистрация: 22.12.2011
Сообщений: 972
11.11.2012, 19:30  [ТС]     Разбиение проекта на .h #4
вот код
main
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <windows.h>
 
 
using namespace std;
#include "OSOBA1.h"
 
 
int main()
{SetConsoleCP(1251);
 SetConsoleOutputCP(1251);
Osoba B("миша","Мавашин",25,07,1993); 
B.Show();
 
system("pause");
return 0;
}
DATA.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#ifndef DATA_H
#define DATA_H
 
class Data
{protected:
 int day;
 int month;
 int year;
 public: 
     Data();
     Data(int day1,int month1,int year1);
};
 
#endif  DATA_H
data.cpp
C++
1
2
3
4
#include "DATA.h"
 
Data::Data()                              {day=25; month=7; year=1993;}
Data::Data(int day1,int month1,int year1) {day=day1; month=month1; year=year1;}
OSOBA1.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef OSOBA_H
#define OSOBA_H
 
#include "DATA.h"
 
class Osoba:public Data
{protected:
 char *prizvysche;
 char *imya;
 public:
     Osoba():Data();
     Osoba(char *prizvysche1,char *imya1,int den1,int  misiaz1,int rik1): Data(den1, misiaz1,rik1);
    
     void Show();
};
 
#endif  OSOBA_H
osoba.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <string.h>
 
#include "OSOBA1.h"
 
Osoba::Osoba():Data() {imya="Людвиг ван"; prizvysche="Бетховен"; }
Osoba::Osoba(char *prizvysche1,char *imya1,int den1,int  misiaz1,int rik1): Data(den1, misiaz1,rik1)
            {
              prizvysche=new char[strlen(prizvysche1)+1];
              strcpy(prizvysche,prizvysche1);
                
              imya=new char[strlen(imya1)+1];
              strcpy(imya,imya1);
            } 
void Osoba::Show() {std::cout<<prizvysche<<"\n"<<imya<<"\n"<<day<<"."<<month<<"."<<year;}
значит так.... класс Оsoba наследует класс Data ... Как правильно оформить реализацию методов наследуемых класов ? Выбивает 27 ошибок. Если реализовать методи класа Osoba в хедере (OSOBA.h) ошибок нет....
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
11.11.2012, 19:54     Разбиение проекта на .h #5
Цитата Сообщение от Seroo Посмотреть сообщение
Выбивает 27 ошибок.
начни с того, что назовёшь эти ошибки

Файлы в проект все включены, надеюсь?
Seroo
 Аватар для Seroo
59 / 59 / 4
Регистрация: 22.12.2011
Сообщений: 972
11.11.2012, 20:16  [ТС]     Разбиение проекта на .h #6
Error 1 error C2969: синтаксическая ошибка: ;: требуется определение функции-члена до "}" e:\програмування\проекти с++\5\5\osoba1.h 11
Error 2 error C2969: синтаксическая ошибка: ;: требуется определение функции-члена до "}" e:\програмування\проекти с++\5\5\osoba1.h 12
Error 20 error C2969: синтаксическая ошибка: ;: требуется определение функции-члена до "}" e:\програмування\проекти с++\5\5\osoba1.h 11
Error 21 error C2969: синтаксическая ошибка: ;: требуется определение функции-члена до "}" e:\програмування\проекти с++\5\5\osoba1.h 12
Error 4 error C2630: обнаружен ";" в списке с разделителем-запятой e:\програмування\проекти с++\5\5\osoba1.h 12
Error 6 error C2630: обнаружен ";" в списке с разделителем-запятой e:\програмування\проекти с++\5\5\osoba.cpp 6
Error 23 error C2630: обнаружен ";" в списке с разделителем-запятой e:\програмування\проекти с++\5\5\osoba1.h 12
Error 25 error C2630: обнаружен ";" в списке с разделителем-запятой e:\програмування\проекти с++\5\5\main.cpp 10
Error 8 error C2614: Osoba: недопустимая инициализация члена: "Osoba" не является базовым классом или членом e:\програмування\проекти с++\5\5\osoba.cpp 6
Error 7 error C2612: недопустимый завершающий ":" в списке инициализации членов и базовых классов e:\програмування\проекти с++\5\5\osoba.cpp 6
Error 18 error C2601: Osoba::Show: недопустимые локальные определения функций e:\програмування\проекти с++\5\5\osoba.cpp 15
Error 27 error C2562: Osoba::Osoba: функция типа "void", возвращающая значение e:\програмування\проекти с++\5\5\main.cpp 16
Error 26 error C2534: Osoba: конструктор не может возвращать значение e:\програмування\проекти с++\5\5\main.cpp 16
Error 11 error C2144: синтаксическая ошибка: перед "char" требуется ")" e:\програмування\проекти с++\5\5\osoba.cpp 7
Error 10 error C2143: синтаксическая ошибка: отсутствие ";" перед "{" e:\програмування\проекти с++\5\5\osoba.cpp 6
Error 13 error C2143: синтаксическая ошибка: отсутствие ";" перед "{" e:\програмування\проекти с++\5\5\osoba.cpp 8
Error 9 error C2143: синтаксическая ошибка: отсутствие ";" перед ":" e:\програмування\проекти с++\5\5\osoba.cpp 6
Error 14 error C2065: prizvysche1: необъявленный идентификатор e:\програмування\проекти с++\5\5\osoba.cpp 9
Error 15 error C2065: prizvysche1: необъявленный идентификатор e:\програмування\проекти с++\5\5\osoba.cpp 10
Error 16 error C2065: imya1: необъявленный идентификатор e:\програмування\проекти с++\5\5\osoba.cpp 12
Error 17 error C2065: imya1: необъявленный идентификатор e:\програмування\проекти с++\5\5\osoba.cpp 13
Error 24 error C2062: тип "int" не требуется e:\програмування\проекти с++\5\5\main.cpp 9
Error 3 error C2059: синтаксическая ошибка: заголовок подставляемой функции e:\програмування\проекти с++\5\5\osoba1.h 12
Error 22 error C2059: синтаксическая ошибка: заголовок подставляемой функции e:\програмування\проекти с++\5\5\osoba1.h 12
Error 12 error C2059: синтаксическая ошибка: ) e:\програмування\проекти с++\5\5\osoba.cpp 7
Error 5 error C2039: {ctor}: не является членом "Osoba" e:\програмування\проекти с++\5\5\osoba.cpp 6
Error 19 error C1004: непредвиденное обнаружение конца файла e:\програмування\проекти с++\5\5\osoba.cpp 16

Добавлено через 20 минут
<<Файлы в проект все включены, надеюсь?
так
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
11.11.2012, 20:22     Разбиение проекта на .h #7
C++
1
2
3
 public:
     Osoba():Data();
     Osoba(char *prizvysche1,char *imya1,int den1,int  misiaz1,int rik1): Data(den1, misiaz1,rik1);
Зачем Вы в объявлении указываете Data()?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.11.2012, 20:32     Разбиение проекта на .h
Еще ссылки по теме:

C++ Разбиение проекта на файлы
Разбиение проекта на файлы C++
как в решение из двух проектов из второго проекта обращаться к функциям из первого проекта C++

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

Или воспользуйтесь поиском по форуму:
Seroo
 Аватар для Seroo
59 / 59 / 4
Регистрация: 22.12.2011
Сообщений: 972
11.11.2012, 20:32  [ТС]     Разбиение проекта на .h #8
дякую, запрацювало ....
Yandex
Объявления
11.11.2012, 20:32     Разбиение проекта на .h
Ответ Создать тему
Опции темы

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