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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Seroo
59 / 59 / 4
Регистрация: 22.12.2011
Сообщений: 972
#1

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

11.11.2012, 01:12. Просмотров 808. Ответов 7
Метки нет (Все метки)

Эсть класс А от его наследую класс Б, в .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 при наследовании ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2012, 01:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Разбиение проекта на .h (C++):

Разбиение проекта на файлы - C++
Имеется проект, в котором несколько классов, путем проб и ошибок я разделил несколько классов по файлам, но вот что получается, для них...

Разбиение проекта на файлы С++ - C++
Есть проект, нужно разбить на несколько файлов. Я то разбил, но есть ошибки непонятного содержания. Ошибка типа:...

Разбиение проекта на файлы - C++
Не знаю почему не получается разбить проект на файлы. Пишет всё время fatal error LNK1169: one or more multiply defined symbols found ...

Разбиение проекта на файлы - C++
Нужно разбить проект на файлы main.cpp, struct.cpp(здесь функции), struct.h(библиотеки, структура, прототипы функций). Сам пробовал -...

Разбиение однофайлового проекта на многофаовый (функции). C++ - C++
Есть код программы, которая позволяет ввести динамический массив, а затем 1. Упорядочивает элементы массива по возрастанию. 2. Находит...

Разбиение проекта на файлы - C++
Добрый вечер. Пишу проект на винапи, в нем есть несколько классов с обьявлением и определением. Хотелось бы вынести код каждого класса в...

7
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.11.2012, 02:41 #2
Что за ошибки? И не видно, что в .h файлах.
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,926
Записей в блоге: 1
11.11.2012, 05:01 #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
0
Seroo
59 / 59 / 4
Регистрация: 22.12.2011
Сообщений: 972
11.11.2012, 19:30  [ТС] #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) ошибок нет....
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,926
Записей в блоге: 1
11.11.2012, 19:54 #5
Цитата Сообщение от Seroo Посмотреть сообщение
Выбивает 27 ошибок.
начни с того, что назовёшь эти ошибки

Файлы в проект все включены, надеюсь?
0
Seroo
59 / 59 / 4
Регистрация: 22.12.2011
Сообщений: 972
11.11.2012, 20:16  [ТС] #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 минут
<<Файлы в проект все включены, надеюсь?
так
0
Croessmah
Эксперт CЭксперт С++
13408 / 7558 / 853
Регистрация: 27.09.2012
Сообщений: 18,590
Записей в блоге: 3
Завершенные тесты: 1
11.11.2012, 20:22 #7
C++
1
2
3
 public:
     Osoba():Data();
     Osoba(char *prizvysche1,char *imya1,int den1,int  misiaz1,int rik1): Data(den1, misiaz1,rik1);
Зачем Вы в объявлении указываете Data()?
1
Seroo
59 / 59 / 4
Регистрация: 22.12.2011
Сообщений: 972
11.11.2012, 20:32  [ТС] #8
дякую, запрацювало ....
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.11.2012, 20:32
Привет! Вот еще темы с ответами:

Разбиение проекта CodeBlocks на файлы - C++
В общем, такая проблема. Писал класс строки, вроде все работало, но вот когда начал пытаться разбить проект на файлы, вылез лог с...

как в решение из двух проектов из второго проекта обращаться к функциям из первого проекта - C++
Собственно данная задача возникает, когда в Blank Solution добавляем проект модульных тестов к первому проекту Empty C++. К примеру первый...

QR -разбиение - C++
Доброго всем времени суток. У кого есть красиво написанное QR-разложение матриц с помощью преобразования Хаусхолдера? Если не сложно,...

Разбиение на лексемы - C++
Нужно написать программу, запрашивающую строку текста, разбивающую ее на лексемы и выводящую лексемы в обратном порядке. Желательно си, не...


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

Или воспользуйтесь поиском по форуму:
8
Yandex
Объявления
11.11.2012, 20:32
Ответ Создать тему
Опции темы

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