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

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

Войти
Регистрация
Восстановить пароль
 
IvanPryamoy_2
0 / 0 / 0
Регистрация: 21.01.2013
Сообщений: 23
#1

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

07.02.2013, 18:05. Просмотров 387. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.02.2013, 18:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Взаимно пересекающиеся хидеры у двух файлов (C++):

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

Слияние двух файлов по алгоритму: цифра вставляется после двух символов - C++
#include <iostream> #include <io.h> #include <stdio.h> #include <windows.h> #include <string.h> #include <conio.h> using...

Организовать проект в виде двух заголовочных и двух программных файлов. Выполнить многофайловую компиляцию - C++
Как это зделать?(( #include "stdafx.h" #include <iostream> #include <conio.h> #include <iomanip> //для манипуляторов вывода ...

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

Определить, имеются ли три прямые, пересекающиеся в одной точке - C++
Прямая на плоскости может быть задана уравнением a*x + b*y + с = 0, где a и b одновременно не равны нулю. Будем рассматривать прямые только...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Саня gamer
96 / 70 / 1
Регистрация: 18.05.2011
Сообщений: 343
Записей в блоге: 1
07.02.2013, 18:07 #2
препроцесорную обёртку попробуй
1
Tiva
94 / 94 / 1
Регистрация: 25.04.2012
Сообщений: 429
07.02.2013, 18:10 #3
в хедеры добавляйте
C++
1
2
3
4
#ifndef Headername_H
#define Headername_H
...//код хидера
#endif
Добавлено через 1 минуту
так по-моему только для вижуалки
в билдере через #pragma once вроде
1
IvanPryamoy_2
0 / 0 / 0
Регистрация: 21.01.2013
Сообщений: 23
08.02.2013, 09:28  [ТС] #4
Цитата Сообщение от 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
Эксперт CЭксперт С++
13237 / 7509 / 847
Регистрация: 27.09.2012
Сообщений: 18,448
Записей в блоге: 3
Завершенные тесты: 1
08.02.2013, 09:47 #5
Такой вариант устроит?
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.02.2013, 09:47
Привет! Вот еще темы с ответами:

Выявить все треугольники, не пересекающиеся с другими треугольниками этого набора - C++
Всем привет! Пишу курсовик, столкнулся проблемой на самом важном пункте моей поставленной задачи: На плоскости имеется набор...

XOR двух файлов - C++
Доброго времени суток. Стоит задача произвести операцию XOR над каждым битом двух файлов и в итоге получить третий. Использую для этого...

Хеш двух файлов - C++
Доброго времени суток) У меня есть два фала(txt), с разными текстами, но одинаковом размером. При получение хеша этих фалов, они совпадают....

Объединение двух бинарных файлов - C++
Как сделать программу которая считывает числа (упорядоченные по возрастанию) из двух бинарных файлов f и g, и сливает их в один...


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

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

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