Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

C++

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
Trajor



Зарегистрирован: 13.05.2005
Сообщения: 1
Откуда: Moscow

СообщениеДобавлено: Пт Май 13 2005 11:14    Заголовок сообщения: C++ Ответить с цитатой

День добрый
Вопрос следующий, я пытаюсь разбить проет на несколько файлов, в частности
main.cpp - главный
num.h - заглоовочный файл для класса
num.cpp - код класса
func.cpp - код функций, использующихся в опреаторах класса

//====main.cpp
#include "num.h"
using namespace ns;

void main()
{
...
}

//====num.cpp
#include "func.cpp"
using namespace mns;

namespace ns
{
... code of class ...
};

//====num.h

#include "num.cpp"

namespace ns
{
num::num(int*, int);

num::num(int);

void num::operator -= (const num&);

void num::operator += (const num&);

bool num::operator > (num);

bool num::operator < (num);

bool num::operator == (num);

bool num::operator >= (num);

bool num::operator <= (num);

const num::operator = (const num&);

void num::print();

}

//======func.cpp
#include <iostream>
using namespace std;
#define neg -100
#define MAX 10

namespace mns
{
...code of funcs
func1
func2...
};

и возникают при Buildе следующие ошибки

func.obj : error LNK2005: "int * __cdecl mns::operS(int *,int *,char)" (?operS@mns@@YAPAHPAH0D@Z) already defined in main.obj

num.obj : error LNK2005: "int * __cdecl mns::arShl(int *)" (?arShl@mns@@YAPAHPAH@Z) already defined in main.obj

и так для каждой функции из num.h и func.cpp

Не скажете с чем это связано? Буду очень благодарен.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
DmitryShm



Зарегистрирован: 17.11.2003
Сообщения: 211
Откуда: Казань

СообщениеДобавлено: Пт Май 13 2005 13:59    Заголовок сообщения: ваши include Ответить с цитатой

Эти #include "num.cpp" уже настараживает. Так не делается: h-файлы -- это заголовки (публично декларируемые), а до твоих cpp-файлов пользователям твоих классов пофиг. Разберись с тем, что куда у тебя входит. И если такой маньяк, то в main.cpp делай #include "num.cpp", где объявляется класс, а не #include "num.h", где его долбаная реализация. Обычно классы x.h и x.cpp делают одним блоком. Потом плохой идеей мне кажется вынесение функций логики на func.cpp. А про ошибку можно сказать одно: у тебя их будет полно. Smile Искренне желаю тебе изучить C++ до уровня понимания книги А. Александреску про современное программирование на С++. Cool Это действительно красивый язык.
_________________
love IT
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Kefir



Зарегистрирован: 16.04.2005
Сообщения: 443
Откуда: Пермь

СообщениеДобавлено: Пн Май 16 2005 07:54    Заголовок сообщения: Ответить с цитатой

Да. во-первых
Код:
include "num.cpp"
, это не то что не правильно, а вообще неприлично, а во вторых, в файлах *.h, я обычно пишу следующее:
Код:
#ifndef THIS_HEADER_FILE
#define THIS_HEADER_FILE

...
...
...

#endif

Это позволяет избежать проблемм с повторным включением этого файла
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...