![]() |
|
Модераторы: 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 |
попробуй определить конструктор в теле класса. Если, конечно, на принцип не пошел...
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |