Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > Как правильно собрать файлы проекта? |
Автор: Alca 26.11.2008, 10:48 | ||||||||||||||||
Как правильно собрать файлы проекта? 1. Модули с функциями: MyStrFunc.cpp //функции не являются методами каких-либо классов
MyFSOStrFunc.cpp //функции не являются методами каких-либо классов
2. Классы: CIni.h
CIni.cpp
CPerform.h
CPerform.cpp
3. Главный модуль: uMain.h uMain.cpp
Результат:
Ключевая фраза здесь: "already defined". ![]() |
Автор: jonie 26.11.2008, 11:18 |
заглушки против двойных включений стоят на h файлах ? |
Автор: Alca 26.11.2008, 11:21 | ||
Стоят:
Добавлено через 13 минут и 4 секунды Как правильно подключить класс к проекту? |
Автор: 586 26.11.2008, 12:28 | ||||||||
Нужно указывать .h-файлы, в которых описаны прототипы функций. MyStrFunc.h
MyFSOStrFunc.h
CIni.cpp
CPerform.cpp
|
Автор: Alca 26.11.2008, 12:50 | ||||||||
586, сделал как ты написал:
CPerform.cpp
CXString.cpp (выше был как MyStrFunc.cpp)
Добавляю след. функцию (без шаблонов) и все компилться:
Почему не работает с шаблоном? P.S. Эта функция sTypeToStr вызывается не один раз и с разными параметрами. |
Автор: 586 26.11.2008, 13:45 | ||||
Реализуй шаблонную функцию в .h-файле. Или сделай вызов этой функции в CXString.cpp для double.
другого выхода я не вижу...
С шаблоном не работает, потому что реализации для double нету в объектном файле CXString.obj... Не будет же компилятор делать реализацию шаблонных функций для всех существующих типов. Для типа int он сделал реализацию, потому что эта функция вызывается где-то в CXString.cpp. Когда компилируется CXString.cpp, компилятор не знает о других .cpp-файлах. |
Автор: Alca 26.11.2008, 14:00 | ||||||
Типа вместо прототипа:
написать:
в CXString.h? да? |
Автор: 586 26.11.2008, 14:04 |
да. |
Автор: Alca 26.11.2008, 14:10 |
Спасибо 586, выручил. ![]() Я тебе там крестик поставил. P.S. Действительно эта функция вызывалась для int. ![]() |