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

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

Войти
Регистрация
Восстановить пароль
 
Edison4
6 / 6 / 0
Регистрация: 23.02.2012
Сообщений: 169
#1

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

23.10.2012, 23:51. Просмотров 701. Ответов 7
Метки нет (Все метки)

Здравствуйте форумчане!Изучаю классы и столкнулся с такой ошибкой :
Ошибка 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 минуты
Что никто не знает?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.10.2012, 23:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Подключение одной директивы в нескольких файлах (C++):

Подключение с помощью директивы #include нескольких функций, находящихся в разных файлах. - C++
Здравствуйте, уважаемые программисты. Помогите, пожалуйста, разобраться в такой ситуации: есть несколько функций, каждая из которых...

Использование одной константы в нескольких файлах - C++
Пишу примитивную игру, в которой игрок ходит по прямоугольному полю и встречает монстров. Решил разделить разросшийся cpp-файл на...

Подключение заголовочного файла "level.h" (tinyXML) в нескольких файлах - C++
Здравствуйте, хотел бы уточнить у знающих людей, почему не компилится проект с использованием tinyXML. У меня есть вот такой кусок кода в...

Внешняя переменная в нескольких файлах - C++
file01.h #ifndef FILE01_H_ #define FILE01_H_ int blem = 1; #endif file02.h

Использование enum в нескольких файлах - C++
Как объявить или куда поместить enum mode{x, y, z} чтобы его можно было использовать в файлах f1.h и f2.h ? (mode- один из аттрибутов...

Объявление класс в нескольких файлах - C++
Можноли как-то объявление одного класса разбить на несколько заголовочных файлов? Хочу создать класс, в котором основной функционал...

7
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 соответственно.
0
Edison4
6 / 6 / 0
Регистрация: 23.02.2012
Сообщений: 169
24.10.2012, 07:19  [ТС] #3
Но мне нужно использовать класс A в классе B и еще в main.cpp.Как такое реализовать?
0
Croessmah
Эксперт CЭксперт С++
13419 / 7573 / 855
Регистрация: 27.09.2012
Сообщений: 18,646
Записей в блоге: 3
Завершенные тесты: 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
0
Edison4
6 / 6 / 0
Регистрация: 23.02.2012
Сообщений: 169
25.10.2012, 16:11  [ТС] #5
А если у меня есть класс ClassC в котором мне нужно использовать класс B и этот класс C использовать в main.cpp получится та же ошибка, так как сделать ?
0
Croessmah
Эксперт CЭксперт С++
13419 / 7573 / 855
Регистрация: 27.09.2012
Сообщений: 18,646
Записей в блоге: 3
Завершенные тесты: 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
0
Edison4
6 / 6 / 0
Регистрация: 23.02.2012
Сообщений: 169
25.10.2012, 21:13  [ТС] #7
Не сработало!
Проект
0
Croessmah
Эксперт CЭксперт С++
13419 / 7573 / 855
Регистрация: 27.09.2012
Сообщений: 18,646
Записей в блоге: 3
Завершенные тесты: 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
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.10.2012, 21:29
Привет! Вот еще темы с ответами:

Директивы препроцессора Составить программу, использующую директивы препроцессора - C++
1) Задать константы M1,M2,...,M5 и вычислить M1+ 2M2 + 3M3 + 4M4 + 5M5 2) С помощью директив #if, #else, #elif осуществлять выбор строк...

Считывание из одной строки. Как сделать из нескольких? - C++
#include &quot;stdafx.h&quot; #include &lt;iomanip&gt; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;locale.h&gt; #include &lt;fstream&gt; #include...

Как задать выполнение нескольких событий на нажатие одной кнопки - C++
Добрый день всем! На форме расположен компонент TListView. По нажатию на заголовок столбца нужно выполнить сортировку данных (например,...

Дан текстовый файл,состоящий из одной или нескольких строк. помогите решить - C++
Дан текстовый файл,состоящий из одной или нескольких строк.Каждая строка файла содержит числа,разделенные пробелами. Польхователь вводит с...


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

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

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