|
|
|
Кросс включение заголовочных файлов
|
|||
|---|---|---|---|
|
#18+
Есть два заголовочных файла с описанием классов. Каждый класс содержит экземпляр другого: Файл "ProxyContext.h" Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Файл "ProxySocketMgr.h" Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Ошибка возникает при вызове метода TraceRequest класса CProxyContext, хотя без него (только с описанием переменной m_pContext) все компилируется. Не подскажите, как разрешить данную проблему. Компилируется в Visual Studio 2005, если что ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2006, 12:32 |
|
||
|
Кросс включение заголовочных файлов
|
|||
|---|---|---|---|
|
#18+
Что за ошибка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2006, 12:46 |
|
||
|
Кросс включение заголовочных файлов
|
|||
|---|---|---|---|
|
#18+
Error 23 error C2027: use of undefined type 'CProxyContext' c:\mydocs\visual studio 2005\projects\icontri\i3service\proxysocketmgr.cpp 17 Error 24 error C2227: left of '->TraceRequest' must point to class/struct/union/generic type c:\mydocs\visual studio 2005\projects\icontri\i3service\proxysocketmgr.cpp 17 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2006, 12:54 |
|
||
|
Кросс включение заголовочных файлов
|
|||
|---|---|---|---|
|
#18+
Проблема решается добавлением Код: plaintext Единственное, хочется понять, верно это или нет. Я считал, что достаточно одного включения (в "ProxyContext.cpp"). Возможно, я не прав. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2006, 13:02 |
|
||
|
Кросс включение заголовочных файлов
|
|||
|---|---|---|---|
|
#18+
FuntПроблема решается добавлением Код: plaintext Единственное, хочется понять, верно это или нет. Я считал, что достаточно одного включения (в "ProxyContext.cpp"). Возможно, я не прав. Каждый cpp отрабатывается отдельно, поэтому если в нем нет включения он ничего не будет знать об описании класса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2006, 13:24 |
|
||
|
Кросс включение заголовочных файлов
|
|||
|---|---|---|---|
|
#18+
FuntПроблема решается добавлением Код: plaintext Единственное, хочется понять, верно это или нет. Я считал, что достаточно одного включения (в "ProxyContext.cpp"). Возможно, я не прав. Ашники служат для объявления. При этом на проходе компилятора, по исходникам смотрится та инфа которая необходима... Если Вы объявляете указатель на класс (а имя класса просто объявлено выше) внутри ашника (к примеру) - то компилятор знает его размерность - это ему ДОСТАТОЧНО. А вот когда Вы зовёте метод этого класса - этой инфы (что он просто некий класс) - уже не достаточно. Для этого нужно описание этого класса, из которого вычисляются относительные смещение в бинарном коде. То что Вы разместили полное описание класса в другом сипипишнеке (который лезет к его методу) - это нормально. И ещё. Очень редки те ситуации, когда компилятор компилирует - но ошибка возникает из за не правильной трактовки кода (к исключениям мона отнести НЕ типизированное использование указателей и иже). Можно сказать, что задача программиста складывается из этапов: компиляции (самая первая лёгкая победа), успешного запуска (уже получше), правильной физической работы (ну считай одна треть дела), правильной логической работы (уже половину прошли), и работы без глюков (ну это как коммунизм - на горизонте и к этому стремимся)... удачи Вам (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2006, 13:32 |
|
||
|
Кросс включение заголовочных файлов
|
|||
|---|---|---|---|
|
#18+
Всем спасибо за просвещение начинающего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2006, 15:39 |
|
||
|
Кросс включение заголовочных файлов
|
|||
|---|---|---|---|
|
#18+
достаточно вынести тело AppendMessage в спп-файл и будет счастье. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2006, 15:49 |
|
||
|
Кросс включение заголовочных файлов
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2006, 16:04 |
|
||
|
Кросс включение заголовочных файлов
|
|||
|---|---|---|---|
|
#18+
нет, не сделал, тело функции в ашнике сидит, а должно сидеть в сппшнике. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2006, 17:01 |
|
||
|
Кросс включение заголовочных файлов
|
|||
|---|---|---|---|
|
#18+
maXmoнет, не сделал, тело функции в ашнике сидит, а должно сидеть в сппшнике. Разве студия не должна говорить, что ошибка в ашнике, который инклудится из сипипишника? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2006, 17:05 |
|
||
|
Кросс включение заголовочных файлов
|
|||
|---|---|---|---|
|
#18+
хмм... может быть... значит забыл в сппшнике ProxyContext.h подрубить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2006, 17:10 |
|
||
|
Кросс включение заголовочных файлов
|
|||
|---|---|---|---|
|
#18+
если расставить все точки над i, то вот это забвная фишка include при компиляции просто вставляет файл что указан в данный код. описание должно быть подключено выше самой имплементации, для предотвращения нежелательных пересечений лутше использовать class xxxx extern "C++"; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2006, 13:04 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34186071&tid=2029859]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
185ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 242ms |
| total: | 507ms |

| 0 / 0 |
