Банальный вопрос по заголовкам
допустим есть заголовок "bounding.h" также есть его "bounding.cpp"
еще есть "stdafx.h",
в "stdafx.h" прописываю "bounding.h",
в "bounding.cpp" включаю "stdafx.h",
и как говорится получи фашист гранату - в "bounding.cpp" оказывается уже все алреади в теле класса (а класс у меня прописан в "bounding.h"),
пробовал через #ifndef теже я..ца вид сбоку, поведуйте пожалуста общие правила по работе с заголовками
Советую попонятней задать вопрос. Или привести кусок исходного кода. Судя по описанию должно работать.
создаю хидер "bounding.h", в нем описываю класс,обьявляю прототипы функций этого класса в это же "bounding.h", создаю "bounding.срр" там работаю с этими функциями, еще имеется файл "stdafx.h" где подключаю различные заголовки,
вот в "stdafx.h" я пишу #include "bounding.h", а в "bounding.срр" #include "stdafx.h",
чтоб до "bounding.срр" доперло где искать класс к которому принадлежат эти функции(которые написаны в "bounding.срр"),так вот внимание вопрос:
почему компилятор выдает сообщение (дословно) - функция уже прочитана в теле класса. Просто решил уже так в "bounding.h" запихал функции, а "bounding.срр" отправил курить бамбук. щаз опять замостырю ошибку и выложу куски кода
Код:
error C2084: function 'bool BoundBox::CollisionBox(BoundBox)' already has a body
--это ошибка, всего их 4, ровно как и кол-во функций:),
чтоб до "bounding.срр" доперло где искать класс к которому принадлежат эти функции(которые написаны в "bounding.срр")[/QUOTE]
Чтоб до "bounding.срр" доперло где искать класс, в него нужно включить "bounding.h", ведь он же там и находится. А в "stdafx.h" нужно включать только хедеры, которые редко изменяются или не изменяются вообще, например, из STL.
И в начале хедеров пиши #pragma once.
чтоб не искать допустимопределенный хидер, и как бы у всех срр студия просит подключения stdafx.h, нет ну в настройках моно отключить хотя както помню отключал но неудачно, или ето как обычно микрософт сначало сделали а потом думают зачем.
поповоду #pragma once я через #ifndef #endif делаю, или...
убрал из stdafx подключил прям в главном (ну там где надо), одолел он на...теперь ошибки посыпались,вабсче шквал, редефинитион этот класс, с функциями таже байда,
дайте совет, может кто поначалу тоже проблемничал с етими подключениями заголовков
В принципе с заголовками не должно быть ничего сложно, если точно понимать, что все, что делает директива #iinclude - это включение содержимого одного файла в другой.
Автор, ты нигде в заголовках bounding.cpp не инклюдишь?
#pragma once
2)Зделать ребилд.
Цитата: Alexandoros
1)Всунуть в начало *.h
#pragma once
2)Зделать ребилд.
#pragma once
2)Зделать ребилд.
А чем разница между
Код:
#ifndef
#define
..........
#endif
#define
..........
#endif
что уже реализовано?
Код:
class BoundBox
{
.....
bool CollisionBox(BoundBox *BB);
.....
};
{
.....
bool CollisionBox(BoundBox *BB);
.....
};
Код:
bool BoundBox::CollisionBox(BoundBox BB)
Исправьте, для начала, это, а потом скажите, что ответил вам компилятор.
Цитата: nikitozz
А чем разница между
что уже реализовано?
Код:
#ifndef
#define
..........
#endif
#define
..........
#endif
что уже реализовано?
А хз как оно там реализовано. Может там еще какой .н есть.