Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 21.01.2013
Сообщений: 23

Взаимно пересекающиеся хидеры у двух файлов

07.02.2013, 18:05. Показов 970. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
MyLib.h:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "..\MyLib\MyLib_dev_h.h"
 
namespace MyLib
{
    class Lib1
    {
    public:
        int A;
    };
 
    class Lib2: public MyLib_dev_h::Lib1
    {
    public:
        int B;
    };
}
MyLib_dev.h:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "..\MyLib\MyLib.h"
 
namespace MyLib_dev_h
{
    class Lib1
    {
    public:
        int A;
    };
 
    class Lib2: public MyLib::Lib1
    {
    public:
        int B;
    };
}
Проще говоря, файлы взаимозависимы. Получаем ошибку компиляции: "error C2653: MyLib: не является именем класса или пространства имен".

Если во второй файл сверху добавить строчки:
C++
1
2
3
4
5
6
7
8
namespace MyLib
{
    class Lib1
    {
    public:
        int A;
    };
}
то получаем ошибку: "error C2011: MyLib::Lib1: переопределение типа "class""

Как увязать два файла друг с другом?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.02.2013, 18:05
Ответы с готовыми решениями:

3 взаимно пересекающиеся окружности
1. Окружность на плоскости может быть задана координатами x, y ее центра и радиусом r. Пусть даны соответствующие характеристики нескольких...

Почему-то ни вижуал студийные хидеры ни хидеры проекта GLUT не компилириуются(компилятор MinGW), почему?
В составе компилятора тоже хидеры для OpenGL но так же не компилируются.. Вот сурсы: 1.cpp, console output, glut.h ЗЫ И тупорылые...

Сложение двух взаимно перпендикулярных колебаний
Помогите, пожалуйста, с решением задачи. Складываются два взаимно перпендикулярных колебания с одинаковыми периодами 0,4 и с одинаковой...

4
97 / 71 / 5
Регистрация: 18.05.2011
Сообщений: 343
Записей в блоге: 1
07.02.2013, 18:07
препроцесорную обёртку попробуй
1
96 / 96 / 21
Регистрация: 25.04.2012
Сообщений: 449
07.02.2013, 18:10
в хедеры добавляйте
C++
1
2
3
4
#ifndef Headername_H
#define Headername_H
...//код хидера
#endif
Добавлено через 1 минуту
так по-моему только для вижуалки
в билдере через #pragma once вроде
1
0 / 0 / 0
Регистрация: 21.01.2013
Сообщений: 23
08.02.2013, 09:28  [ТС]
Цитата Сообщение от Tiva Посмотреть сообщение
в хедеры добавляйте
C++
1
2
3
4
#ifndef Headername_H
#define Headername_H
...//код хидера
#endif
Добавлено через 1 минуту
так по-моему только для вижуалки
в билдере через #pragma once вроде
Попробовал в обоих случаях (с добавкой строк и без) результат без изменений.

Кстати, в обоих файлах я использую
C++
1
#pragma once
, поэтому подобные обертки не нужны (эту строчку не добавил в код, чтобы не засорять примеры).

Добавлено через 15 часов 7 минут
Разбиение на файлы задается либо созданием интерфейса (в данном случае в файл MyLib_dev.h я прячу реализацию), либо логикой программы (в одном файле моя библиотека, во втором- функции операционной системы....).

Поэтому переразбиение на файлы (если таковое решит вопрос) должно учитывать это.
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
08.02.2013, 09:47
Такой вариант устроит?
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
//MyLib.h
#ifndef _MYLIB_H_
#define _MYLIB_H_
 
 
namespace MyLib
{
    class Lib1
    {
    public:
        int A;
    };
}
#include "MyLib_dev_h.h"
namespace MyLib{
    class Lib2: public MyLib_dev_h::Lib1
    {
    public:
        int B;
    };
}
 
 
#endif
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
//MyLib_dev_h.h
#ifndef _MYLIB_DEV_H_
#define _MYLIB_DEV_H_
 
 
 
namespace MyLib_dev_h
{
    class Lib1
    {
    public:
        int A;
    };
}
#include "MyLib.h"
namespace MyLib_dev_h{
    class Lib2: public MyLib::Lib1
    {
    public:
        int B;
    };
}
 
 
#endif

у вас два класса наследуются от двух не определенных классов
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.02.2013, 09:47
Помогаю со студенческими работами здесь

Про самописные классы и их хидеры
Привет! Создаю h-файл и cpp-файл. Расписываю там класс или функцию, затем включаю хидер в проект и присоединяю cpp-файл. Как сделать,...

Расширенный алгоритм Евклида для двух взаимно простых чисел, буду благодарен)
Расширенный алгоритм Евклида для двух взаимно простых чисел. Выведите результат на экран.

Напишите уравнение траектории точки, участвующей одновременно в двух взаимно перпендикулярных колебаниях
7. Напишите уравнение траектории точки, участвующей одновременно в двух взаимно перпендикулярных колебаниях с одинаковыми частотами. От...

Как в нужном порядке подключить хидеры?
Здравствуйте! Возникла проблема с подключение windows.h. Структура программы: main.c <- core.h <- devices.h Один из...

Проверить, будут ли числа a, b, c, d попарно взаимно просты.Нахождение НОД двух чисел оформить в виде подпрограммы.
Проверить, будут ли числа a, b, c, d попарно взаимно просты. Числа называются взаимно простыми, если их наибольший общий делитель (НОД)...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru