Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.09.16;
Скачать: CL | DM;

Вниз

темплейты (с++билдер 6)   Найти похожие ветки 

 
wl ©   (2007-08-18 11:52) [0]

помогите. никогда не работал с шаблонами, но тут пришлось. Вот есть такой класс

template <class T>
class CArray
{
private:
 T* a;
public:
 void Sort(unsigned start, unsigned size);
};


когда вызываю так:

 CArray <int> x;
 x.Sort(0,1);


мне компилятор ругается Unresolved external CArray<int>....
что нужно сделать, чтобы стало resolved?


 
wl ©   (2007-08-18 12:08) [1]

на данный момент функция пустая:
void CArray::Sort(unsigned start, unsigned size){}
я не могу понять, почему она не ресолвится? я что, должен для всех возмозжных классов писать реализацию? но так же быть не должно


 
palva ©   (2007-08-18 12:09) [2]

А функция Sort у вас определена? У меня вот это работает (bcc32 ver 5.5)
template <class T>
class CArray
{
private:
T* a;
public:
void Sort(unsigned start, unsigned size);
};
template <class T>
void CArray<T>::Sort(unsigned start, unsigned size) {}

int main() {
CArray <int> x;
x.Sort(0,1);
return 0;
}


 
palva ©   (2007-08-18 12:12) [3]

> я что, должен для всех возмозжных классов писать реализацию? но так же быть не должно
Вы можете написать темплейт реализации.


 
wl ©   (2007-08-18 12:13) [4]

определена... компилятор ругается... причем такие вещи как std::string вполне работают... что-то я делаю не так, а что именно, понять не могу


 
wl ©   (2007-08-18 12:14) [5]


template <class T>
void CArray<T>::Sort(unsigned start, unsigned size)
{
 ///
}


вот он такой


 
palva ©   (2007-08-18 12:20) [6]

> на данный момент функция пустая:
> void CArray::Sort(unsigned start, unsigned size){}

Еще раз: ваша функция неправильно определена. Я написал, как надо.

В вашем случае функцию можно определить и так тоже:
template <class T>
void CArray<int>::Sort(unsigned start, unsigned size) {}


 
palva ©   (2007-08-18 12:23) [7]

wl ©   (18.08.07 12:14) [5]

Тогда не знаю. Мой борландовский компилятор ваш текст переваривает без проблем.

template <class T>
class CArray
{
private:
T* a;
public:
void Sort(unsigned start, unsigned size);
};
template <class T>
void CArray<T>::Sort(unsigned start, unsigned size)
{
///
}
int main() {
CArray <int> x;
x.Sort(0,1);
return 0;
}


 
wl ©   (2007-08-18 12:29) [8]

palva, ну по синтаксису у меня так и есть(иначе компилятор не будет компилировать - в 5-ом посте написана конкретная реализация). а у вас нет случайно визуал студии? Просто студия у меня настроена на симбиан, и не хочет создавать проекты для win. если есть, создайте пустое консольное приложение, и пришлите мне в мыло wl_cool@mail.ru


 
palva ©   (2007-08-18 12:42) [9]

Чего-то я недопонял, чего вам надо и каким боком это имеет отношение с сабжу.
Случайно у меня установлена Visual Studio 2005 Express Edition. Но Windows SDK к нему не прикручен. Так что либо консольные приложения либо NET - оконные приложения.
Проект пустого консольного послал.


 
wl ©   (2007-08-18 12:54) [10]

ну мне нужно на с++ создать темплейтный класс. в билдере не получается по непонятным мне причинам, поэтому я и попросил пустой проект в визуал студии, потому что моя для венды не хочет создавать, только для симбиан


 
noname_   (2007-08-18 18:04) [11]

описание класса и реализация метода в разных файлах?


 
wicked ©   (2007-08-18 21:33) [12]

галка "Generate external references for all template instances" в опциях проекта включена? если включена - выключи немедленно

а вообще странно - если все написано именно так, то значит либо вляют какие то внешние факторы, либо у нас не весь код :)

и дурной вопрос по смыслу написанного - зачем писать свой CArray, если есть STL с std::vector и std::sort?


 
wl ©   (2007-08-19 11:54) [13]

это тестовое задание при приеме на работу, на знание языка c++ насколько я понимаю, пользоваться готовыми контейнерами запрещено


 
Ojbect Pragmutdinov   (2007-08-19 14:47) [14]

Функция определена в классе или вынесена?

Нужно написать так.

template <class T>
class CArray
{
private:
T* a;
public:

 template <class T>
 void CArray<T>::Sort(unsigned start, unsigned size)
 {
  ///
 }

};



Страницы: 1 вся ветка

Текущий архив: 2007.09.16;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.037 c
2-1187697367
evgenij_
2007-08-21 15:56
2007.09.16
Excel


2-1187762201
Виктор007
2007-08-22 09:56
2007.09.16
StrAlloc на АПИ


6-1169218004
Vlad Oshin
2007-01-19 17:46
2007.09.16
Как отправить письмо самому себе клиентом по умолчанию?


9-1159867542
codent
2006-10-03 13:25
2007.09.16
Как делать игры


15-1185519092
БарЛог
2007-07-27 10:51
2007.09.16
Командная строка Windows