![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 27.05.2010
Сообщений: 6
|
![]()
Доброго времени суток. Для начала обрисую ситуацию. Мне нужно динамически создать двумерный массив из трех классов, для этого я создал некий класс с интерфейсом и остальные классы просто наследовал от него. Допустим, у меня получился массив 3х3 (как он получился смотрите дальше), но когда мне нужно достучаться до данных находящихся не в нулевом столбце программа вылетает с ошибкой 0xC0000005. Вот упрощенный код, который отражает суть проблемы:
Код:
|
![]() |
![]() |
![]() |
#2 |
Участник клуба Подтвердите свой е-майл
Регистрация: 19.11.2007
Сообщений: 1,022
|
![]() Код:
Последний раз редактировалось profi; 27.05.2010 в 21:19. |
![]() |
![]() |
![]() |
#3 |
Регистрация: 27.05.2010
Сообщений: 6
|
![]()
Это понятно, что ваш код будет работать. И понятно, что objMy[i] = new A[3]; нельзя, но objMy[i] = new A*[3]; можно, потому что я тут создаю не объекты абстрактного класса, а массив указателей на абстрактный класс. Тем более приведенные изменения не решают проблемы, смысл в том, чтобы оперировать объектами производного класса, через базовый класс.
|
![]() |
![]() |
![]() |
#4 |
Участник клуба Подтвердите свой е-майл
Регистрация: 19.11.2007
Сообщений: 1,022
|
![]()
Я против этой строки
Код:
|
![]() |
![]() |
![]() |
#5 |
Регистрация: 27.05.2010
Сообщений: 6
|
![]()
нет, я просто подумал, что мы друг друга не поняли) Спасибо, это решение. А ты не мог бы подсказать, почему мой код не работает? В чем там ошибка?
|
![]() |
![]() |
![]() |
#6 |
JAVA BEAN
Участник клуба
Регистрация: 22.04.2007
Сообщений: 1,329
|
![]() Код:
А я знаю, что не так! В конструкторе не должен вызываться чисто виртуальный метод. Vang, profi, у вас двоих будет падать вот тут: B(){setInput();} потому что объект класса B ещё не создан, поэтому вызывается A::setInput() Последний раз редактировалось Carbon; 27.05.2010 в 20:25. |
![]() |
![]() |
![]() |
#7 |
Регистрация: 27.05.2010
Сообщений: 6
|
![]()
А как это объясняет, что объекты в нулевом столбце создаются нормально (нормально в смысле b инициализируется и до нее можно потом достучаться)? Да и падает, лично у меня, не на setInput(), а на getInput(), в отличие от profi, у него все работает.
|
![]() |
![]() |
![]() |
#8 |
Участник клуба Подтвердите свой е-майл
Регистрация: 19.11.2007
Сообщений: 1,022
|
![]()
Carbon действительно +1
![]() |
![]() |
![]() |
![]() |
#9 | |
JAVA BEAN
Участник клуба
Регистрация: 22.04.2007
Сообщений: 1,329
|
![]() Цитата:
Например, мы можем выйти за предел массива и всё будет хорошо. Но потом в совсем другой части программы может упасть. А то, что у него не падает, не значит что код рабочий. Компилятор ещё и оптимизировать умеет и разные версии по-разному. |
|
![]() |
![]() |
![]() |
#10 |
Регистрация: 27.05.2010
Сообщений: 6
|
![]()
Carbon к сожалению это не решило проблему, если даже убрать из конструктора чисто виртуальный метод, то программа все равно подает на том же месте, т.е. на getInput(). Вот код:
Код:
Код:
Последний раз редактировалось Vang; 28.05.2010 в 13:24. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблема с созданием динамических объектов. (Delphi7) | Dalagardi | Помощь студентам | 2 | 15.03.2010 17:15 |
Передать массив базового абстрактного класса функциям производных классов | mishutka999 | Общие вопросы C/C++ | 2 | 01.12.2009 14:08 |
проблема создания массива объектов | Meduzza | Общие вопросы C/C++ | 3 | 28.05.2009 05:07 |
Создание классов и использование объектов классов при написании программ в среде C++. | Frozen inside | Помощь студентам | 0 | 16.04.2009 23:18 |
Delphi: Проблема с созданием объектов | Omedus | Помощь студентам | 4 | 08.08.2008 18:42 |