Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Что делать с заголовками? / 4 сообщений из 4, страница 1 из 1
06.11.2004, 00:22
    #32771590
Чайник 123
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делать с заголовками?
простейший пример:

Код: plaintext
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.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
//--- file "a.h" ----

class A
{
public:
	A(){};
	~A(){};


	void TestA();
};


//--- file "a.cpp" ----

#include "stdafx.h"
#include "a.h"

void A::TestA()
{
	//...
}


//--- file "b.h" ----

#include "a.h"

class B : public A
{
public:
	B(){};
	~B(){};

	void TestB();
};


//--- file "b.cpp" ----

#include "stdafx.h"
#include "b.h"

void B::TestB()
{
	//...
}


//--- file "b2.h" ----

#include "a.h"

class B2 : public A
{
public:
	B2(){};
	~B2(){};

	void TestB2();
};



//--- file "b2.cpp" ----

#include "stdafx.h"
#include "b2.h"

void B2::TestB2()
{
	//...
}



//--- file "MAIN.cpp" ----

#include "stdafx.h"

#include "b.h"
#include "b2.h"

int main(int argc, char* argv[])
{
	printf("Hello Brian!\n");

	B pB;
	B2 pB2;

	pB.TestB();
	pB2.TestB2();

	return  0 ;
}


выдает аналогично простейшую ошибку: error C2011: 'A' : 'class' type redefinition

конечно понятно, можно написать по цепочке:
в "b.h" - #include "a.h"
в "b2.h" - #include "b.h"
в "main.cpp" - #include "b2.h"

и все будет работать, но как это обойти проще? ведь иерархия в реальном проекте более навороченая, по мере создания проекта приходится "расщеплять и разветвлять" классы... Что-же теперь - цеплять заголовки один за другой чтоли?
...
Рейтинг: 0 / 0
06.11.2004, 06:33
    #32771625
Oylan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делать с заголовками?
Как мне кажется нужно использовать следующее


#ifndef CLASS_A
#define CLASS_A

class A
{


}
#endif
...
Рейтинг: 0 / 0
06.11.2004, 19:23
    #32771794
Чайник 123
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делать с заголовками?
Спасибо за ответ. Это я предполагал с самого начала.

А по конкретнее можно расказать? Например на коде который я привел б начале. Куда эти директивы вставить в моем случае?

Ковырялся в Страутструпе, ответа чето не нашел.
Неужели никто не может сказать как это сделать?
Тут же много "крутых" сишников на форуме. Некоторые даже MFC заново переписывают :)
/topic/44649&pg=2#305078
...
Рейтинг: 0 / 0
08.11.2004, 02:46
    #32772143
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делать с заголовками?
Oylan тебе обьясняет что ты дважды включаешь заголовочный файл в проект. И предлагает ВСЕ классы обрамить макроподстановкой. И это единственное верное решение.

- Понятное дело. Трупстраус лоббирует интересы языка своего любимого...

- Переписывать MFC? Зачем??
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Что делать с заголовками? / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]