![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Molnienosetz |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 6.3.2003 Где: Россия, Королёв, комитетский лес Репутация: нет Всего: нет |
У меня опять проблемы (у меня всегда проблемы).
Я сделал, как посоветовали вчера: Есть конструктор matrix(unsigned, unsigned); Я хочу выделить память под массив: matrix *m_arr = new matrix(4, 4) [10]; // Массив из десяти матриц В ответ компилятор говорит мне, что, мол у меня не перегружен оператор matrix::new(unsigned, unsigned, ...). Что делать? (Я точно не записал что он говорит - забыл - а до дома - полчаса ходу.) --------------------
"Вы только появились на форуме, но уже стали весьма популярны. Правда не как профессионал, а большой зазнайка."Это про меня! :) (В том смысле, что писалось не про меня.) |
|||
|
||||
Guest |
|
|||
Unregistered |
так тебе надо массив указателей...
matrix *m [10]; for (int i=0; i<10; i++) m[i] = new matrix (4,4); |
|||
|
||||
Molnienosetz |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 6.3.2003 Где: Россия, Королёв, комитетский лес Репутация: нет Всего: нет |
Не, в том смысле, что указатель один, указывает на массив объектов
--------------------
"Вы только появились на форуме, но уже стали весьма популярны. Правда не как профессионал, а большой зазнайка."Это про меня! :) (В том смысле, что писалось не про меня.) |
|||
|
||||
Nastya |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 27.3.2002 Где: Мариуполь Репутация: 5 Всего: 44 |
Так делать нельзя. Тут можно вызвать только конструктор по умолчанию. (на сколько я в курсе) А вот так как посоветовал Гость. В полне реально -------------------- Что бы понять рекурсию, надо понять рекурсию "Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор |
|||
|
||||
Fantasist |
|
|||
![]() Лентяй ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1517 Регистрация: 24.3.2002 Репутация: 4 Всего: 41 |
Однозначно. Нет, делать-то так, конечно, можно, если перегрузить operator new. ![]() -------------------- Волны гасят ветер... |
|||
|
||||
Molnienosetz |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 6.3.2003 Где: Россия, Королёв, комитетский лес Репутация: нет Всего: нет |
Я опять всё нагнал и всех напарил. Пишет мне не компилятор, а компоновщик.
Следующее: linker error: undefined symbol _matrix_new_(void far*, unsigned int, unsigned long, unsigned int, ...) Но вы, очевидно, правы. Не стоит напрягаться зря. --------------------
"Вы только появились на форуме, но уже стали весьма популярны. Правда не как профессионал, а большой зазнайка."Это про меня! :) (В том смысле, что писалось не про меня.) |
|||
|
||||
knave |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 320 Регистрация: 6.3.2003 Где: Санкт-Питербург ( Россия) Репутация: 1 Всего: 5 |
Используя то что тебе написали ты какраз и сможеш обращаться к массиву из матриц 4 на 4 (Я так понял тебе это и надо) -------------------- С наилучшими пожеланиями !!! |
|||
|
||||
Molnienosetz |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 6.3.2003 Где: Россия, Королёв, комитетский лес Репутация: нет Всего: нет |
Просто мне хотелось иметь ОДИН указатель. Но всё равно спасибо.
--------------------
"Вы только появились на форуме, но уже стали весьма популярны. Правда не как профессионал, а большой зазнайка."Это про меня! :) (В том смысле, что писалось не про меня.) |
|||
|
||||
Step |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
Molnienosetz |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 6.3.2003 Где: Россия, Королёв, комитетский лес Репутация: нет Всего: нет |
Понятно... Вообще-то мне теперь хочется узнать, как выглядит этот конструктор по умолчанию и чем он отличается от моего.
--------------------
"Вы только появились на форуме, но уже стали весьма популярны. Правда не как профессионал, а большой зазнайка."Это про меня! :) (В том смысле, что писалось не про меня.) |
|||
|
||||
neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: 1 Всего: 62 |
Po umolchaniju budet pustoi' konstruktor: Matrix(); No ty mojesh sdelat' i takoi': Matrix(int, int); -------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
Molnienosetz |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 6.3.2003 Где: Россия, Королёв, комитетский лес Репутация: нет Всего: нет |
А почему, когда я писал свой пустой конструктор, линкер мне тоже ошибку выводил?
--------------------
"Вы только появились на форуме, но уже стали весьма популярны. Правда не как профессионал, а большой зазнайка."Это про меня! :) (В том смысле, что писалось не про меня.) |
|||
|
||||
neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: 1 Всего: 62 |
Prosto napishi:
matrix M1(4, 4) A chto za problemy s pustym konstruktorom? Kod privedi. -------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
Molnienosetz |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 6.3.2003 Где: Россия, Королёв, комитетский лес Репутация: нет Всего: нет |
Когда у меня в классе был конструктор
matrix(); или matrix(void); , всё равно на matrix *matarr = new matrix [число]; линкер писал
А когда я все конструкторы удалял, никакой ошибки не было. --------------------
"Вы только появились на форуме, но уже стали весьма популярны. Правда не как профессионал, а большой зазнайка."Это про меня! :) (В том смысле, что писалось не про меня.) |
|||
|
||||
Molnienosetz |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 6.3.2003 Где: Россия, Королёв, комитетский лес Репутация: нет Всего: нет |
ПОЧЕМУ!!! ![]() Я всегда думал, что массив объектов через указатель изготовляется так: делаем указатель типа "указатель на объект_1", он занимает какие-нибудь 4 байта и показывает на этого объекта. Запрашиваем память под кучку объектов, стоящих вплотную. Кусок будет таких размеров: {размер(объект_1) * число объектов}, и передаём адрес этого куска указателю. Обращение к объекту будет таким: (указатель + номер_объекта_начиная_с_нуля) -> элемент_объекта. Правильно? А вот если массив указателей, то: имя_массива[номер_объекта_начиная_с_нуля] -> элемент_объекта. Так будет прожрана огромная кучка памяти, чуть ли не (4 байта * число_объектов) Кстати, я "объект" правильно пишу? Может, надо "обьект"? ![]() Это сообщение отредактировал(а) Molnienosetz - 15.3.2003, 00:09 --------------------
"Вы только появились на форуме, но уже стали весьма популярны. Правда не как профессионал, а большой зазнайка."Это про меня! :) (В том смысле, что писалось не про меня.) |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |