Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.09.16;
Скачать: [xml.tar.bz2];

Вниз

темплейты (с++билдер 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.046 c
1-1183818645
Ricks
2007-07-07 18:30
2007.09.16
Разминка для мозгов


1-1184035040
hyper_omsk
2007-07-10 06:37
2007.09.16
Привелигированный доступ к outlook как?


2-1187978196
Jimmy
2007-08-24 21:56
2007.09.16
Вывод текста без TextOut


8-1165861296
DriveR_F
2006-12-11 21:21
2007.09.16
Работа с TImage и GIF


15-1187334859
balepa
2007-08-17 11:14
2007.09.16
ReadFile зависает (ComPort)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский