![]() |
|
Модераторы: bsa |
![]()
|
|
| scai |
|
||||||
![]() Неофит ![]() Профиль Группа: Участник Сообщений: 122 Регистрация: 20.1.2007 Где: г. Загорск Репутация: нет Всего: 2 |
В общем, тема такая, шаблон контейнера a la матрица, позволяющий работать со строками => класс для строки, класс самого контейнера, включающий массив этих самых строк. Соответственно конструктор, принимающий длину и ширину матрицы. Т.к. new type[size](init_values) заблаговременно запрещена дизайнерами языка, единственное что придумалось, это статическое поле в классе строки, из которого дефолтный конструктор берет размер. Началось, примерно, со следующего:
static_methods_in_template_defered_declaration.cpp:15: error: cannot declare member function 'static void Unit<t>::setDft(int)' to have static linkage было мне ответом от gcc( gnu g++ и djgpp)
c:/djgpp/tmp/cctD7dTT.o:static_methods_in_template.cpp:(.gnu.linkonce.t._ZN4UnitIiE6setDftEi+0x7): undefined reference to `Unit<int>::dft' c:/djgpp/tmp/cctD7dTT.o:static_methods_in_template.cpp:(.gnu.linkonce.t._ZN4UnitIiEC1Ev+0x8): undefined reference to `Unit<int>::dft' collect2: ld returned 1 exit status то есть, все таки скомпилилось, а в чем принципиальная разница? [upd] вспомнил. за g++ далеко лезть, если примерно: он говорил про андефайнд еференс на Unit<int>::setDft(int) и для полноты картины, без функции-инициализатора, напрямую:
c:/djgpp/tmp/ccJ0PuHf.o:static_fiels_in_template.cpp:(.gnu.linkonce.t._ZN4UnitIiEC1Ev+0x8): undefined reference to `Unit<int>::dft' c:/djgpp/tmp/ccJ0PuHf.o:static_fiels_in_template.cpp:(.gnu.linkonce.t._ZN6HolderIiEC1Eii+0x13): undefined reference to `Unit<int>::dft' collect2: ld returned 1 exit status вооот. есть мысли у кого-нибудь? [upd] возможно, я сыдиотничал Это сообщение отредактировал(а) scai - 18.4.2008, 19:09 --------------------
|
||||||
|
|||||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: нет Всего: 70 |
||||
|
||||
| scai |
|
|||
![]() Неофит ![]() Профиль Группа: Участник Сообщений: 122 Регистрация: 20.1.2007 Где: г. Загорск Репутация: нет Всего: 2 |
Тысяча поклонов, владыка регистров и PCI-шины.
Судя по сообщениям с фронта, статические члены шаблона класса до .о-файлов, почему-то, не добираются. Индуктивная же разведка сообщает, что если определить статический метод вне тела класса, то эти .о-файлы невозможно даже скомпилировать (cannot declare member function 'static void Unit<t>::setDft(int)' to have static linkage). Подробности см. выше. Вопрос1: чего я не знаю о статических членах? Вопрос2(основной): как собрать шаблон класса для матрицы, конструктор которого принимает ширину и высоту, и состоящий из отдельных объектов-строк? Это сообщение отредактировал(а) scai - 18.4.2008, 22:49 --------------------
|
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 6 Всего: 162 |
Другим компилятором пробовал?
|
|||
|
||||
| scai |
|
|||
![]() Неофит ![]() Профиль Группа: Участник Сообщений: 122 Регистрация: 20.1.2007 Где: г. Загорск Репутация: нет Всего: 2 |
а что мне другой компилятор, мне под Xlib писать...
Добавлено @ 09:59 Посмотрите кто-нить, тут кода кот наплакал. Ляпнул можт чего? Больше всего удивляет, что компилятор ведет себя по-разному, в зависимости от того, где именно функция определяется..... Это сообщение отредактировал(а) scai - 19.4.2008, 10:07 --------------------
|
|||
|
||||
| scai |
|
||||||
![]() Неофит ![]() Профиль Группа: Участник Сообщений: 122 Регистрация: 20.1.2007 Где: г. Загорск Репутация: нет Всего: 2 |
и ничего больше. То есть, никаких, вроде бы, ограничений... ааа. вот:ANSI'97-draft:
Что бы это значило? Не могу перевести, но буквы знакомые. Вот это explicit&inplicit instatniation&specialization, в контексте срр что может значить, подскажите да.. devc++ говорит то же самое и теми же словами. перегружусь, посмотрю можт там еще какие компиляторы водятся.... [upd] не водятся... ... ... )))) Это сообщение отредактировал(а) scai - 19.4.2008, 13:29 --------------------
|
||||||
|
|||||||
| scai |
|
|||
![]() Неофит ![]() Профиль Группа: Участник Сообщений: 122 Регистрация: 20.1.2007 Где: г. Загорск Репутация: нет Всего: 2 |
В конкретном случае, сделаю массив указателей на строку и сборочно-разборочный цикл... хм... так оно, в общем-то, и нужно..
почему этот код нормально не компилится-то? --------------------
|
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
scai, рекомендую использовать наследование, если тебе так нужен эта статическая переменная:
|
|||
|
||||
| scai |
|
||||
![]() Неофит ![]() Профиль Группа: Участник Сообщений: 122 Регистрация: 20.1.2007 Где: г. Загорск Репутация: нет Всего: 2 |
Все равно
свою задачу я и без нее решил, но дело принципа bsa, я в теории слаб, но специализация, это, вроде Unit<int>, то есть... что-то наподобие
что ли? определять статические члены для каждой специализации ... посредством наследования .... using ... пойду отцов почитаю. Это сообщение отредактировал(а) scai - 19.4.2008, 20:21 --------------------
|
||||
|
|||||
| Dennnis |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 145 Регистрация: 23.3.2008 Репутация: 1 Всего: 4 |
--------------------
Get Rich or Die Tryin' |
|||
|
||||
| bsa |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Вообще-то предполагалось, что существует файл unitattr.cpp, в котором определен статический атрибут dft. Без этого никак. |
||||
|
|||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 6 Всего: 93 |
-------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |