:-1: error: collect2: ld returned 1 exit status, СПАСИТЕ ОТ ДУРДОМА И СУИЦИДА |
Здравствуйте, гость ( Вход | Регистрация )
:-1: error: collect2: ld returned 1 exit status, СПАСИТЕ ОТ ДУРДОМА И СУИЦИДА |
ЙаМайскЫйПчОЛ |
14.10.2009, 19:12
Сообщение
#1
|
Участник Группа: Участник Сообщений: 154 Регистрация: 10.7.2008 Из: СПб Пользователь №: 232 Спасибо сказали: 7 раз(а) Репутация: 5 |
Доброго времени суток...
Товарищи, собратья по КуТэ... вопрос не совсем в КуТэ но я пишу под QtSDK НЕ ПОНИМАЮ В ЧЕМ ОШИБКА!!!! ОБЪЯСНИТЕ ПОЖАЛУЙСТА!!!! Заранее извиняюсь за название классов , но они отражают суть проблеммы... и мое к ней отношение вот хедер CODE #ifndef ZAELO_H #define ZAELO_H template <class C> class Zaelo { public: virtual ~Zaelo(); protected: Zaelo(int a = 0); private: int a_; }; template <class C> class Ox : public Zaelo<C> { public: Ox(int a = 0); virtual ~Ox(); }; #endif // ZAELO_H вот cpp CODE #include "Zaelo.h" template <class C> Zaelo<C>::Zaelo(int a) : a_(a) { } template <class C> Zaelo<C>::~Zaelo() { } template <class C> Ox<C>::Ox(int a) : Zaelo<C>(a) { } template <class C> Ox<C>::~Ox() { } а это main CODE #include <QtCore/QCoreApplication> #include "Zaelo.h" int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); Ox<int> b; return a.exec(); } так вот эта штука выдает при компиляции C:/PROJECTS/Zaebalo/main.cpp:7: undefined reference to `Ox<int>::Ox(int)' C:/PROJECTS/Zaebalo/main.cpp:8: undefined reference to `Ox<int>::~Ox()' C:/PROJECTS/Zaebalo/main.cpp:8: undefined reference to `Ox<int>::~Ox()' :-1: error: collect2: ld returned 1 exit status внимание знатоки... вопрос ... "ПОЧЕМУ" если перенести код из cpp в h то все работает, если написать inline функции в хедере то тоже работает.. ПОЖАЛУЙСТА ОБЪЯСНИТЕ ПОЧЕМУ П.С. это искренний крик души П.С.С. толи лыжи не едут... толи я увлекся проектированием вместо кодинга... Сообщение отредактировал ЙаМайскЫйПчОЛ - 14.10.2009, 20:47 |
|
|
BRE |
14.10.2009, 19:17
Сообщение
#2
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
|
|
|
ЙаМайскЫйПчОЛ |
14.10.2009, 19:24
Сообщение
#3
|
Участник Группа: Участник Сообщений: 154 Регистрация: 10.7.2008 Из: СПб Пользователь №: 232 Спасибо сказали: 7 раз(а) Репутация: 5 |
я в очередной раз перечитываю страуструпа, но ни%№@ не вижу...
|
|
|
BRE |
14.10.2009, 19:41
Сообщение
#4
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
я в очередной раз перечитываю страуструпа, но ни%№@ не вижу... http://www.codeguru.com/forum/showthread.php?t=250284 |
|
|
ЙаМайскЫйПчОЛ |
14.10.2009, 19:50
Сообщение
#5
|
Участник Группа: Участник Сообщений: 154 Регистрация: 10.7.2008 Из: СПб Пользователь №: 232 Спасибо сказали: 7 раз(а) Репутация: 5 |
BRE, товарищь а на ваш взгляд какой способ корректней...
и есть ли подобное описание у авторов типа Шилдта и страуструпа??? |
|
|
AD |
14.10.2009, 19:56
Сообщение
#6
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
BRE, товарищь а на ваш взгляд какой способ корректней... и есть ли подобное описание у авторов типа Шилдта и страуструпа??? Кода с шаблонами полно у Саттера и у Александреску. Если ничего не путаю, то Саттер предпочитал описывать через inline, а затем писать реализацию. У Александреску - вроде бы наоборот - все пишется в h-файле! Решай сам! Можешь найти и почитать Саттера и Александреску! Сложно посоветовать - как больше нравится.... |
|
|
ЙаМайскЫйПчОЛ |
14.10.2009, 20:00
Сообщение
#7
|
Участник Группа: Участник Сообщений: 154 Регистрация: 10.7.2008 Из: СПб Пользователь №: 232 Спасибо сказали: 7 раз(а) Репутация: 5 |
Я еле осилил одну главу александрески)), пока не для моего мозга
хотя давно было надо попробовать ещё заход... Спасибо, за быстрый ответ буду искать Саттера |
|
|
BRE |
14.10.2009, 20:02
Сообщение
#8
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
BRE, товарищь а на ваш взгляд какой способ корректней... Я пользуюсь вторым способом. То есть все описываю в .h Применения первого способа я вроде нигде и не встречал в проектах которые я смотрел. и есть ли подобное описание у авторов типа Шилдта и страуструпа??? Не знаю, стандарты и реальные компиляторы C++ это, так сказать, не одно и тоже. Поэтому, по стандарту есть, а в каком то компиляторе может не оказаться. |
|
|
Litkevich Yuriy |
14.10.2009, 20:13
Сообщение
#9
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
ЙаМайскЫйПчОЛ, напишешь в форуме ещё такой код - получишь красную карточку
|
|
|
DIMEDROLL |
14.10.2009, 20:48
Сообщение
#10
|
Участник Группа: Участник Сообщений: 165 Регистрация: 28.9.2008 Из: Киев Пользователь №: 304 Спасибо сказали: 23 раз(а) Репутация: 0 |
Какой компилятор?
Ответ прост, им не поддерживается такая компиляция когда описание шаблона в хедере, а реализация в срр. Я со студией тоже так когда то мучался Знаю что какой то последний компилятор поддерживает такую компиляцию, непомню только название. ...Браузнул, Comeau, насколько я помню. Он же и больше всего соответсвует стандарту, но не бесплатен. Выход: пиши реализацию в хедере |
|
|
Текстовая версия | Сейчас: 30.11.2024, 2:55 |