Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> LNK2001: unresolved external symbol 
:(
    Опции темы
iSpite
Дата 13.5.2010, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 24.4.2010

Репутация: нет
Всего: нет



есть файл 001.cpp
Код

#include "rectangle.h"
void rec()
{
тут я работаю с классом
}
void main (void)
{
rec;
}

в rectangle.cpp 
Код

#include "rectangle.h"

реализация методов класса

в rectangle.h
Код

#include <iostream>
#include <cmath>
using namespace std;

#define PI 3.14159265
#if !defined RECTANGLE
#define RECTANGLE

template <class TD>
class rectangle
{
public:
private:
};
#endif


описал класс было всё ОК. 
при попытке описать шаблон выдал ошибку линковки подскажите как исправить.
PM MAIL   Вверх
Alexeis
Дата 13.5.2010, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 4
Всего: 459



  Шаблоны в заголовочных файлах описывать нужно. Нету пока что настолько умных компиляторов С++, что скомпилить всего одну реализацию и потом инстанциировать по бинарнику. Компилятор хочет видеть всю реализацию в заголовке. Возможно со временем компиляторы поумнеют и справятся с этой задачей.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
toxx
Дата 13.5.2010, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



unresolved external symbol означает, что нигде линковщик не может найти определение чего-либо(функции, метода). 
PM MAIL   Вверх
iSpite
Дата 13.5.2010, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 24.4.2010

Репутация: нет
Всего: нет



Цитата(Alexeis @ 13.5.2010,  22:35)
Шаблоны в заголовочных файлах описывать нужно. Нету пока что настолько умных компиляторов С++, что скомпилить всего одну реализацию и потом инстанциировать по бинарнику. Компилятор хочет видеть всю реализацию в заголовке. Возможно со временем компиляторы поумнеют и справятся с этой задачей.


так что добавить в заголовок??? как описать?
PM MAIL   Вверх
djamshud
Дата 13.5.2010, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 4
Всего: 39



iSpite, все писать в хедере. Или сделать в нем include"rectagle.cpp". Второй вариант иногда используется, но лично я его не люблю.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
Alexeis
Дата 13.5.2010, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 4
Всего: 459



Цитата(iSpite @  13.5.2010,  21:44 Найти цитируемый пост)
так что добавить в заголовок??? как описать? 

  Все что есть цппшнике закинуть в заголовочный файл где описан шаблон. Компилятору чтобы все разрулить нужен полный исходник. цпп файл дает обж, который можно только слинковать. Линкер не умеет линковать реализацию шаблона, поэтому это должен делать компилятор. Компилятор должен на каждый цппшник где используется шаблон сгенерить свою реализацию по коду из заголовка. Потом линкер объединить одинаковые реализации, но это уже не имеет отношения к вопросу


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
iSpite
Дата 13.5.2010, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 24.4.2010

Репутация: нет
Всего: нет



Цитата(djamshud @ 13.5.2010,  22:58)
iSpite, все писать в хедере. Или сделать в нем include"rectagle.cpp". Второй вариант иногда используется, но лично я его не люблю.

не годиться =(
C1076: compiler limit : internal heap limit reached
пишет что в бесконечную рекурсию уходит
писать всё в хэдере нельзя условие л\р
PM MAIL   Вверх
Alexeis
Дата 13.5.2010, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 4
Всего: 459



  Тогда опиши тайпдефами всевозможные подстановки типов. Весь код не нужно переносить в заголовки. Нужно переносить только реализацию шаблонов. Код использующий шаблоны может быть где угодно.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
djamshud
Дата 13.5.2010, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 4
Всего: 39



iSpite, почитате про препроцессор.

Код

#ifndef blablabla
#define blablabla

template<typename T>
....

#include"blablabla.cpp"

#endif


Код

#include"blablabla.h"

...



--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0489 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.