![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| JackYF |
|
||||||||||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Итак, реализуется свой велосипедный класс "матрица" для сдачи лабы.
Вопрос в следующем: я хочу, чтобы матрица умела инициализироваться двумерным заданным массивом наподобие:
Класс шаблонный, единственный параметр шаблона - тип. Конструктор
справедливо не срабатывает, так как int[2][3] не приводится к int**, у него другая физ. структура. Возможные видимые мной выходы: 1. cделать конструктор
К нему обращаться через
2. Сделать конструктор шаблонным, типа
Первый вариант - не очень красиво и потенциально опасно, второй вариант - может быть сгенерировано многовато функций для каждой из используемых в клиентском коде матриц, по одной для каждого числа столбцов. Кто какой вариант предпочёл бы? Или предложите свой. Это сообщение отредактировал(а) JackYF - 29.11.2007, 19:33 |
||||||||||
|
|||||||||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Жди С++09 - возможно туда включат initializer lists Давай, для начала, разберёмся с этим: ты хочешь параметры конструктора size_t rows и size_t columns передавать таким образом(через "квадратные скобочки")? Можешь написать как ты хочешь, чтобы выглядела инициализация(примерно, но без таких ляпов)? -------------------- 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 |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Эээ... не понял, объясни, в чём ляп. Ну, в идеальном случае так:
Добавлено через 2 минуты и 38 секунд Жду. Только вот лабу через 2 недели сдавать |
|||
|
||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 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 |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
archimed7592, ты чего? у меня два измерения - строки, столбцы. Где массив матриц-то? |
|||
|
||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Ытить... Посыпаю голову пеплом. Спать уже пора
Второй. Во-первых, с вероятностью 80% эти ф-ции заинлайнятся. Особенно, если весь конструктор будет представлять из себя forwarder на какой-нибудь. Во-вторых, даже если бинарник разрастётся, то ты этого не заметишь(ну что такое на сегодняшний день 100 кб?) В-третьих - это лаба Это сообщение отредактировал(а) archimed7592 - 29.11.2007, 20:30 -------------------- 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 |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
||||
|
||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 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 |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
или я что-то не понял, или у меня крутой компилятор:
Это сообщение отредактировал(а) bsa - 29.11.2007, 21:53 |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Правильно. Это развитие второго варианта, шаблонный конструктор. Только уже с двумя параметрами |
|||
|
||||
| JackYF |
|
||||||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Так. Теперь меня удивляет компилятор... g++ 4.2.1
Здесь идут части одного .hpp-файла, который инклюдится в один .cpp Сначала часть-"заголовок":
Затем один из методов:
Ругается компилятор так:
Без этого самого метода всё чики-пики. Вопрос - почему компилятор считает, что класс неполон? Это сообщение отредактировал(а) JackYF - 29.11.2007, 22:57 |
||||||
|
|||||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| bsa |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
А если
|
||||
|
|||||
| JackYF |
|
||||||||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
MAKCim, да, было такое подозрение.
На это компилятор говорит, что
И пока не поменяешь обратно порядок template'ов, говорит о несоответствии прототипов. Добавлено через 1 минуту и 41 секунду bsa, аналогично с вариантом MAKCimа. На прототипы начинает ругаться. Добавлено через 2 минуты и 38 секунд Вариант
На прототипы не ругается, но выдаёт ошибку про "imcomplete type". Добавлено через 8 минут и 18 секунд Сужаем ошибку. За основу взял пример bsa:
Итого имеем то же самое. |
||||||||
|
|||||||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
попробуй определить конструктор в теле класса. Если, конечно, на принцип не пошел...
|
|||
|
||||
| JackYF |
|
||||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Буквально сейчас об этом подумал. Как воркэраунд попробую сделать.
... Блин, что за ёлки... опять ему что-то не так:
Ругается на строчку №27 так:
Я же в функции ему передаю два size_t... Это сообщение отредактировал(а) JackYF - 30.11.2007, 00:19 |
||||
|
|||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
JackYF, йа колдун:
-------------------- 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 |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Поломали они, что ли, это со времён 3-й мажорной версии?... тьху...
Это сообщение отредактировал(а) JackYF - 30.11.2007, 00:24 |
|||
|
||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Тебе "<unresolved overloaded function type>" ни о чём не говорит?
-------------------- 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 |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
||||
|
||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 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 |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
попробуй для начала еще size_t в template заменить на unsigned long.
|
|||
|
||||
| JackYF |
|
||||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Сложно... просто у меня исходники друг на друга завязаны, типа библиотека. Отвязывать один исходник от библиотеки - гиблая задача.
В общем, выкладываю весь tar.gz "библиотеки". Исходник теста:
Путь к библиотеке распакованной только надо будет прописать. Собирать по идее не потребуется. Но если что - там lib/configure, lib/Makefile... Пропиши этому чуду только -DYF_CODE_32... при сборке... и [WINDOWS|LINUX]... Да. надо бы привести это к виду нормальному... Спать... спать... Добавлено @ 00:42 И почему это я не могу аттачить tar.gz... Добавлено через 3 минуты и 10 секунд
Попробовал. К сожалению, ноль эффекта. Добавлено через 6 минут и 51 секунду Ушёл спать... всем большое спасибо за участие. Авось на свежую голову что-то надумается, завтра продолжу. Это сообщение отредактировал(а) JackYF - 30.11.2007, 00:44 Присоединённый файл ( Кол-во скачиваний: 5 )
yf_src_0.08_1.tar.gz.fake.zip 38,51 Kb |
||||
|
|||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
JackYF, шаман хренов
С переименованными параметрами собирается на ура -------------------- 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 |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Чертить многополосные флагштоки!
М-да-а... ты таки собирал моё чудо? |
|||
|
||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
угу - g++ ./main.cpp Правда, пришлось немного пофиксить твои "кроссплатформенные" workaround'ы -------------------- 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 |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
||||
|
||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Точно помню, что ругалось на 0xFFFFFFFFFFFFFFFF(max uint 64), а чего ещё, ес честно не помню - спать хотелось и нажимал ctrl+y на автомате
-------------------- 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 |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
||||
|
||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Вообще, работаю в EmEditor'е(кстати советую, как тупой редактор с примитивной подсветкой), а твоё правилось в FAR'е Добавлено через 57 секунд Всмысле редактор умный, но как IDE не катит -------------------- 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 |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |