Заблокирован
|
|
1 | |
Как одному классу узнать о другом в другом файле, если они не имеют общего наследования10.09.2014, 15:09. Показов 3156. Ответов 5
Метки нет (Все метки)
Есть два класса в разных файлах, первому классу нужно знать о втором и использовать указатели типа второго у себя внутри, второму нужно знать о первом и использовать указатели типа первого у себя внутри.
Если я в первый класс включаю (include) второй, а во второй - первый, с учётом того, что в каждом хедера класса есть защита от множественного включения, то получается, что либо первый не видит второй, либо второй - не видит первый, т.к. один из них раньше включается, а во втором срабатывает защита от включения и его не видно... Классы не имеют общего наследования. Как в таких случаях поступают ? Добавлено через 28 минут Да, и ещё. В каждом из этих классов есть свой enum, ну просто, какой - то свой enum для своего класса, так вот enum другого класса тоже надо видеть в классе
0
|
10.09.2014, 15:09 | |
Ответы с готовыми решениями:
5
Как три нуля заменим на единицы, если они стоят друг с другом только ровно три? Нужно вызвать через сторонний метод(в другом классе,который в другом файле) метод в форме Заменить ссылки в одном файле на ссылки, находящиеся в другом файле, если последние сегменты ссылок совпадают Как использовать экземпляр класса, объявленный в одной файле, в другом файле? |
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
|
||||||
10.09.2014, 15:13 | 2 | |||||
Scrooge McDuck, используют предварительное объявление. h-файлы подключаются в cpp (это кстати всегда предпочтительнее, при прочих равных), в h - предвариетльное объявление.
1
|
Заблокирован
|
|||||||||||||||||||||||||||||||
10.09.2014, 15:30 [ТС] | 3 | ||||||||||||||||||||||||||||||
Спасибо, с этим разобрался, в вот как со всякими структурами или enum-ами поступить ?
Да, и кстати, если я предварительно объявлю класс (см пример кода постом выше):
0
|
118 / 118 / 41
Регистрация: 14.12.2013
Сообщений: 352
|
|
10.09.2014, 15:47 | 4 |
в файле, где описан этот код (.срр файл), надо сделать инклуд файла, где прототип вызываемого конструктора.
а энумы можно в отдельный заголовочный файл вынести, который будет подключаться везде где надо.
1
|
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
|
||||||
10.09.2014, 15:48 | 5 | |||||
Сообщение было отмечено Scrooge McDuck как решение
Решение
Заголовочный файл (one.h) подключать в тот сpp, где определен:
Соответственно enum из one.h тоже буден видет в реализации two.cpp.
1
|
Заблокирован
|
|
10.09.2014, 15:49 [ТС] | 6 |
Я уже разобрался, можно инклюдить файл сколько угодно, хоть из одного файла в другой, а из него обратно, главное писать предварительную декларацию, как было сказано выше, а поскольку по предварительной декларации компилятор не может узнать, что внутри класса, то нужно ещё инклюд этого класса делать, но с предварительной декларацией уже ругаться не будет и будет всё включено как надо . Бред в общем, но я его сделал
0
|
10.09.2014, 15:49 | |
10.09.2014, 15:49 | |
Помогаю со студенческими работами здесь
6
Как открывать с поддомена домена, привязанного к одному серверу, директорию на другом сервере MFC. Как работать с элементами которые друг над другом и они полностью перекрываются Как мне узнать по классу в каком файле.h он находится? Как узнать об изменении DependencyProperty в другом объекте Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |