Текущий архив: 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.47 MB
Время: 0.042 c