crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Тема закрытаНачать новую тему
> :-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, 20:12) *
ПОЖАЛУЙСТА ОБЪЯСНИТЕ ПОЧЕМУ

П.С. это искренний крик души
П.С.С. толи лыжи не едут... толи я увлекся проектированием вместо кодинга...

Потому что это шаблоны. Все нормально. ;)
Почитай про них.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ЙаМайскЫйПчОЛ
  опции профиля:
сообщение 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  


Цитата(ЙаМайскЫйПчОЛ @ 14.10.2009, 20:24) *
я в очередной раз перечитываю страуструпа, но ни%№@ не вижу...

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  


Цитата(ЙаМайскЫйПчОЛ @ 14.10.2009, 20:50) *
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  


Цитата(ЙаМайскЫйПчОЛ @ 14.10.2009, 20:50) *
BRE, товарищь а на ваш взгляд какой способ корректней...

Я пользуюсь вторым способом. То есть все описываю в .h
Применения первого способа я вроде нигде и не встречал в проектах которые я смотрел.

Цитата(ЙаМайскЫйПчОЛ @ 14.10.2009, 20:50) *
и есть ли подобное описание у авторов типа Шилдта и страуструпа???

Не знаю, стандарты и реальные компиляторы C++ это, так сказать, не одно и тоже. :)
Поэтому, по стандарту есть, а в каком то компиляторе может не оказаться.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 14.10.2009, 20:13
Сообщение #9


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9648
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


ЙаМайскЫйПчОЛ, напишешь в форуме ещё такой код - получишь красную карточку
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DIMEDROLL
  опции профиля:
сообщение 14.10.2009, 20:48
Сообщение #10


Участник
**

Группа: Участник
Сообщений: 165
Регистрация: 28.9.2008
Из: Киев
Пользователь №: 304

Спасибо сказали: 23 раз(а)




Репутация:   0  


Какой компилятор?
Ответ прост, им не поддерживается такая компиляция когда описание шаблона в хедере, а реализация в срр.
Я со студией тоже так когда то мучался :)
Знаю что какой то последний компилятор поддерживает такую компиляцию, непомню только название.
...Браузнул, Comeau, насколько я помню. Он же и больше всего соответсвует стандарту, но не бесплатен.
Выход: пиши реализацию в хедере
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Тема закрытаНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 20.9.2018, 1:59