powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Что делать с заголовками?
4 сообщений из 4, страница 1 из 1
Что делать с заголовками?
    #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
Что делать с заголовками?
    #32771625
Oylan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как мне кажется нужно использовать следующее


#ifndef CLASS_A
#define CLASS_A

class A
{


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

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

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

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

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


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