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

Подключение одной директивы в нескольких файлах - C++

Восстановить пароль Регистрация
 
Edison4
6 / 6 / 0
Регистрация: 23.02.2012
Сообщений: 169
23.10.2012, 23:51     Подключение одной директивы в нескольких файлах #1
Здравствуйте форумчане!Изучаю классы и столкнулся с такой ошибкой :
Ошибка 1 error C2011: A: переопределение типа "class" c:\users\edison4\documents\visual studio 2010\projects\project\project\classa.h 3 1 Project
Понял что эта ошибка связана с тем что я подключаю заголовочный файл в другом заголовочном файле и в cpp файле main.Но мне нужно внутри одного класса объявить объект другого класса .Как реализовать это незнаю.
Вообщем вот что у меня есть и как сделать чтобы работало?

ClassA.h
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
class A
{
public:
    A(void) {}
    ~A(void);
    void ShowMessage(void)
    {
        //std::cout<<"TestText!";
    }
};
ClassB.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include "ClassA.h"
class B
{
public:
    A a;
    B() {}
    ~B();
    void ShowMessage()
    {
        a.ShowMessage();
    }
};
main.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
#include "ClassB.h"
#include "ClassA.h"
B *b;
int main()
{
    
    b = new B();
    b->ShowMessage();
    system("pause");
    return 0;
}
И проект на всякий случай
https://www.dropbox.com/s/glsbuvrrvu0rqgj/Project.rar

Добавлено через 3 часа 3 минуты
Что никто не знает?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
polyaKIDze
63 / 63 / 12
Регистрация: 16.07.2012
Сообщений: 147
24.10.2012, 00:06     Подключение одной директивы в нескольких файлах #2
условная компиляция

Добавлено через 10 минут
либо как вариант:
-убрать #include <iostream.h> и #include "ClassA.h" из ClassB.h и main.cpp соответственно.
Edison4
6 / 6 / 0
Регистрация: 23.02.2012
Сообщений: 169
24.10.2012, 07:19  [ТС]     Подключение одной директивы в нескольких файлах #3
Но мне нужно использовать класс A в классе B и еще в main.cpp.Как такое реализовать?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11816 / 6795 / 769
Регистрация: 27.09.2012
Сообщений: 16,867
Записей в блоге: 2
Завершенные тесты: 1
24.10.2012, 07:28     Подключение одной директивы в нескольких файлах #4
#ifndef в помощь

Добавлено через 3 минуты
И еще...
C++
1
2
#include "ClassB.h"
#include "ClassA.h"
фаил ClassA.h подключается в файле ClassB.h так что подключать ClassA в main нет необходимости, достаточно подключить только ClassB.h
Edison4
6 / 6 / 0
Регистрация: 23.02.2012
Сообщений: 169
25.10.2012, 16:11  [ТС]     Подключение одной директивы в нескольких файлах #5
А если у меня есть класс ClassC в котором мне нужно использовать класс B и этот класс C использовать в main.cpp получится та же ошибка, так как сделать ?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11816 / 6795 / 769
Регистрация: 27.09.2012
Сообщений: 16,867
Записей в блоге: 2
Завершенные тесты: 1
25.10.2012, 20:44     Подключение одной директивы в нескольких файлах #6
ClassB.h
C++
1
2
3
4
#ifndef _CLASSB_H_
#define _CLASSB_H_
//Код класа B
#endif
ClassC.h
C++
1
2
3
4
#ifndef _CLASSC_H_
#define _CLASSC_H_
//Код класа C
#endif
Edison4
6 / 6 / 0
Регистрация: 23.02.2012
Сообщений: 169
25.10.2012, 21:13  [ТС]     Подключение одной директивы в нескольких файлах #7
Не сработало!
Проект
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.10.2012, 21:29     Подключение одной директивы в нескольких файлах
Еще ссылки по теме:

Внешняя переменная в нескольких файлах C++
C++ Подключение с помощью директивы #include нескольких функций, находящихся в разных файлах.
C++ Считывание из одной строки. Как сделать из нескольких?

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

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11816 / 6795 / 769
Регистрация: 27.09.2012
Сообщений: 16,867
Записей в блоге: 2
Завершенные тесты: 1
25.10.2012, 21:29     Подключение одной директивы в нескольких файлах #8
нужно
C++
1
#ifndef
а вы написали
C++
1
#ifdef
Добавлено через 3 минуты
И объявление класса C тоже заключите в
C++
1
2
3
4
#ifndef _CLASSC_H_
#define _CLASSC_H_
//Объявление класса C
#endif
Yandex
Объявления
25.10.2012, 21:29     Подключение одной директивы в нескольких файлах
Ответ Создать тему
Опции темы

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