| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Шаблонный класс |
| Автор: Metalex 15.5.2010, 12:09 | ||
| Доброго времени суток! Помогите переделать класс под шаблонный, пожалуйста.
|
| Автор: toxx 15.5.2010, 12:48 | ||
вместо int ставишь T(любой тип твоего вектора) |
| Автор: Metalex 15.5.2010, 12:56 | ||
| Это ясно А как, например, вот такое переделать:
|
| Автор: toxx 15.5.2010, 13:09 | ||||
Вы так и не послушали тогда переделать на size_t чтоб >0 не писать =) так наверно:
|
| Автор: djamshud 15.5.2010, 13:44 | ||
| >T& DynArr::operator [](int index) const Тут архитектураная ошибка.
|
| Автор: toxx 15.5.2010, 14:03 | ||
| djamshud не обратил внимания на это, сам когда писал без const использовал(всё работает =) ) GoldFinch а не лучше без const вообще?
|
| Автор: djamshud 15.5.2010, 14:13 | ||
| GoldFinch, конечно скомпилится (если учесть, что я привел псевдокод). toxx, Metalex, обычно делают так:
|
| Автор: toxx 15.5.2010, 14:18 | ||||||||
| djamshud да, когда я писал делал свой вектор делал так
тут, из-за моего незнания что такое и в чем разница между
написал не глядя, вот вы и поправили хорошо...надо прочитать про это..спасибо а почему пишите обычно если пример класса или функции то название foo?
|
| Автор: djamshud 15.5.2010, 14:47 |
| toxx, традиция. Вроде hello world. Добавлено через 1 минуту и 4 секунды http://ru.wikipedia.org/wiki/Метапеременная |
| Автор: Metalex 16.5.2010, 15:52 |
| кто-то поможет весь код переделать? ведь там не долго, главное - знания |
| Автор: toxx 16.5.2010, 16:14 | ||||
| Metalex Проверь, мог намудрить.и твой оператор* фиг знает чего делает(он по идее должен быть методом класса, а не другом), сам переделай =)
Также оператор= должен не проверять на совпадение размерности, а проверять на присваивание самому себе т.е.
если это выполняется он должен освобождать старую память, выделить новую и перекопировать элементы. |
| Автор: Metalex 17.5.2010, 20:10 |
| toxx, отлично! немного подправил твой код и все работает! Я хоть и почитал, но обьясни еще, пожалуйста, на пальцах, что такое size_t. |
| Автор: toxx 17.5.2010, 20:28 | ||
определён так
применяется для счетчиков циклов, индексации массивов,адресной арифметики. http://www.realcoding.net/articles/chto-takoe-sizet-i-ptrdifft.html подробней расписано что это такое =) |
| Автор: mes 17.5.2010, 20:31 |
не всегда так |
| Автор: toxx 17.5.2010, 20:35 |
| mes хм, тогда в vs2008=) http://www.valar.ru/gallery/0510/size_t.jpg |
| Автор: djamshud 17.5.2010, 20:39 |
| Есть мнение, что на x86_64 будет иначе:). |
| Автор: mes 17.5.2010, 21:18 |
это в большей степени зависит не от компилятора, а от платформы.. |
| Автор: GoldFinch 17.5.2010, 21:35 | ||
toxx, там что-то вроде
|
| Автор: toxx 17.5.2010, 21:49 | ||
| GoldFinch ага, как раз хотел задать такой вопрос(как же там определено это) , я думал что это это зависит от разрядности системы 32x 64x(как и написал тов.mes ). спасибо, буду знать =)
|
| Автор: mes 17.5.2010, 23:45 | ||
а в 32х разрядной тогда сколько ? Добавлено через 2 минуты и 21 секунду
ага зависит от системы, только не напрямую, а через директивы |
| Автор: toxx 17.5.2010, 23:49 | ||
| mes 4 байта?
я как бы это и имел ввиду... язык костлявый ) |
| Автор: mes 18.5.2010, 08:45 |
http://msdn.microsoft.com/en-us/library/aa261215(VS.60).aspx |
| Автор: djamshud 18.5.2010, 10:23 |
| __int64 - какая-то вижуал студиевская придумка. Есть более правильный int64_t из stdint.h. |
| Автор: toxx 18.5.2010, 12:01 |
| mes я думал вы не про __int64 а unsigned int =) так конечно __int64=8 байт в 32х разрядной системе. djamshud по мне так главное работало =) как уж реализовано для меня не важно, хотя наверно если более глубоко заниматься .. но мне пока до такого уровня далеко.. хотя не за горами этот уровень надеюсь=) |