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

Опять про реализацию класса в отдельном файле - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Irka-Kefirka
0 / 0 / 0
Регистрация: 05.08.2012
Сообщений: 4
05.08.2012, 16:07     Опять про реализацию класса в отдельном файле #1
Допустимо ли следующее?

есть проект в Visual Studio 2010.
в нем следующие файлы:

main.cpp - собссно программа
MyClass.h - интерфейс класса MyClass
MyClass.cpp - реализация класса MyClass
MySubClass.h - интерфейс класса MySubClass (производного от MyClass)
MySubClass.cpp - реализация класса MySubClass

Содержимое файлов:
main.cpp

--------------------------
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include "MyClass.h"
#include "MySubClass.h"
...
blablabla
...
int main()
{
...
blablabla
...
}
---------------------------

MyClass.h

--------------------------
C++
1
2
3
4
5
6
7
8
9
10
11
12
#ifndef MYCLASS_H
#define MYCLASS_H
 
class MyClass
{
public:
...
protected
...
};
 
#endif
---------------------------

MyClass.cpp

---------------------------
C++
1
2
3
4
5
6
7
8
9
#ifndef MYCLASS_CPP
#define MYCLASS_CPP
 
#include "MyClass.h"
....
blablabla
...
 
#endif
--------------------------

MySubClass.h

--------------------------
C++
1
2
3
4
5
6
7
8
9
10
11
12
#ifndef MYSUBCLASS_H
#define MYSUBCLASS_H
 
class MySubClass: public MyClass
{
public:
...
private
...
};
 
#endif
---------------------------

MySubClass.cpp

---------------------------
C++
1
2
3
4
5
6
7
8
9
#ifndef MYSUBCLASS_CPP
#define MYSUBCLASS_CPP
 
#include "MySubClass.h"
....
blablabla
...
 
#endif
--------------------------


В данном случае, ничего не работает. При компиляции сообщает, что не определен базовый класс MyClass.
Хотя, если поместить реализацию MySubClass в файл MySubClass.h (реализацию тока MySubClass, реализацию
MyClass же оставить в файле MyClass.cpp без всяких изменений), то все работает. Почему реализация
MyClass в отдельном файле работает нормально, а MySubClass нет?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.08.2012, 16:07     Опять про реализацию класса в отдельном файле
Посмотрите здесь:

C++ опять про fflush, уже stdout
C++ Вопрос про rand() и его реализацию.
C++ Переменные в отдельном файле
C++ Реализация класса в отдельном файле
C++ Где размещать реализацию методов класса?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
05.08.2012, 16:14     Опять про реализацию класса в отдельном файле #2
Если вы, в реализаци одного класса (или в заголовочном файле этого класаа), используете другой класс, то в этом файле нужно подключить заголовочный файл используемого класса. В MySubClass.h нужно сделать #include "MyClass.h". И, если вы не включаете .cpp файлы в другие, зачем вам в них такие конструкции:
C++
1
2
3
4
#ifndef MYCLASS_CPP
#define MYCLASS_CPP
..............................
#endif
Irka-Kefirka
0 / 0 / 0
Регистрация: 05.08.2012
Сообщений: 4
05.08.2012, 16:25  [ТС]     Опять про реализацию класса в отдельном файле #3
в файле MySubClass.h нет строки #include "MyClass.h", если Вы об этом.
но проблема в том, что все работает если реализацию класса MySubClass оставить в файле MySubClass.h
почему так?
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
05.08.2012, 16:30     Опять про реализацию класса в отдельном файле #4
Irka-Kefirka, выложите архив с проектом, код работать не должен потому что

Цитата Сообщение от Irka-Kefirka Посмотреть сообщение
в файле MySubClass.h нет строки #include "MyClass.h"
Irka-Kefirka
0 / 0 / 0
Регистрация: 05.08.2012
Сообщений: 4
05.08.2012, 16:32  [ТС]     Опять про реализацию класса в отдельном файле #5
ааааа....все понятно...вопрос закрыт
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
05.08.2012, 16:33     Опять про реализацию класса в отдельном файле #6
Цитата Сообщение от Irka-Kefirka Посмотреть сообщение
реализацию класса MySubClass оставить в файле MySubClass.h
Не видно кода, что тут скажешь?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.08.2012, 16:34     Опять про реализацию класса в отдельном файле
Еще ссылки по теме:

Вынести реализацию конструктора производного класса C++
C++ Реализовать определение нового класса в отдельном файле (библиотека пользователя)
Описание функции шаблонного класса библиотеки в отдельном cpp-файле C++

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

Или воспользуйтесь поиском по форуму:
Irka-Kefirka
0 / 0 / 0
Регистрация: 05.08.2012
Сообщений: 4
05.08.2012, 16:34  [ТС]     Опять про реализацию класса в отдельном файле #7
Цитата Сообщение от Jupiter Посмотреть сообщение
Irka-Kefirka, выложите архив с проектом, код работать не должен потому что
вот в том то и непонятно было, что он работал, даже с отсутствием этой строки, но только если реализацию MySubClass оставить в файле MySubClass.h
Yandex
Объявления
05.08.2012, 16:34     Опять про реализацию класса в отдельном файле
Ответ Создать тему
Опции темы

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