![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| myth777 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 110 Регистрация: 30.3.2009 Репутация: -1 Всего: -1 |
У меня есть класс Class1
Есть еще один класс, хранящий массив указателей на Class1 Внем мне приспичило вызвать функцию из этих указателей. $self->{Mas_mDsGUI}->[$i]->CallFunction(); Вобщем не работает. Как быть? |
|||
|
||||
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
myth777, я бы, на Вашем месте, написал текст сообщения об ошибке
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
| myth777 |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 110 Регистрация: 30.3.2009 Репутация: -1 Всего: -1 |
Если вызываю метод
то пишет Software error: Can't call method "PrintOk" on unblessed reference at C:/Server/wwwroot/cgi-bin/lib//group_DSGUI.pm line 149. А вот если я печатаю
То переменную Table он видит |
||||
|
|||||
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
означает, что ссылка не является объектом. Как Вы сохраняете объекты в массиве? -------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
| myth777 |
|
||||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 110 Регистрация: 30.3.2009 Репутация: -1 Всего: -1 |
Я понимаю что не является объектом.
Вот как заполняю.
В таком случае все переменные класса mDSGUI, хранящиеся в его анонимном хэше видяться а функции нет. Причем если просто создаю класс
то из $mg все нормально будет вызываться и видеться(переменные и функции)
будет работать Добавлено через 3 минуты и 24 секунды Вот как заполняю переменные mDSGUI
Или функции тоже нужно как то хитро заносить в self? Пробовал указатели сохранять в self ничего хорошего из этого не получилось. |
||||||||||
|
|||||||||||
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
myth777, покажите что хранится в массиве
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
| myth777 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 110 Регистрация: 30.3.2009 Репутация: -1 Всего: -1 |
Все выводить не стану много конфедец.
И таки х Bless-ов несоклько в массиве. Говорю же массив содержит указатели на классы. Функциями в дампе и не пахнет. Мож их тоже как нибуть Bless-ить? |
|||
|
||||
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
myth777, интересно Вы программу пишите с использованием объектов и так много про них не знаете.
То, что Вы привели - объект класса mDSGUI. Что такое "указатели на классы" мне не известно. Для решения возникшей проблемы я бы добавил
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
| myth777 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 110 Регистрация: 30.3.2009 Репутация: -1 Всего: -1 |
Perl очень спецефический язык, на котором пишу всего два месяца. Поэтому и не знаю многих вещей.
Ваш пример не работает.
Не видет он функцию и все тут. |
|||
|
||||
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
myth777, код, который я привел и не должен был ничего починить. Он для отладки. Покажите последние строки до
код должен вывести номер элемента массива и ссылкой на что этот элемент является. Добавлено через 4 минуты и 25 секунд Сообщение Can't call method "PrintOk" on unblessed reference означает, что элементом массива является ссылка, но структура данных (скорее всего хэш) по этой ссылке не является объектом. Нужно понять, как в массив попадает хэш, вместо объекта. Добавлено через 6 минут и 27 секунд Результат работы Dumper() показал, что часть элементов массива - нормальные объекты, следовательно надо узнать номер элемента массива, не являющегося объектом и узнать, как он туда попал. -------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
| myth777 |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 110 Регистрация: 30.3.2009 Репутация: -1 Всего: -1 |
Он только это и напечатал:
не работает? Типо как нибудь локально создает указатель на объект, а потом хрень какая нибудь в памяти получается? |
||||
|
|||||
| NuINu |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 131 Регистрация: 19.7.2008 Репутация: 5 Всего: 6 |
мне кажеться здесь простая проблема с приоритетом операций
можно попробовать так
|
|||
|
||||
| myth777 |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 110 Регистрация: 30.3.2009 Репутация: -1 Всего: -1 |
Шустрый -
на
выдает Software error: Not a SCALAR reference at C:/Server/wwwroot/cgi-bin/lib//group_DSGUI.pm line 154. Добавлено через 11 минут и 51 секунду Заработало. Нашел багу. Я дурак. В конструкторе класса проинициализировал массив на указатели моего класса
Из за этого первым элементом массива была чушь. (пустой хэш) Всем спасибо, за советы. Молодцы - отписываете! Форум в избранное добавил уже. |
||||
|
|||||
| GoDleSS |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 11.2.2007 Где: Пироговский Репутация: 2 Всего: 2 |
myth777, не забываем пользоваться Data::Dumper - ом, дабы проще было анализировать подобные ситуации, ага ;)
Это сообщение отредактировал(а) GoDleSS - 3.4.2009, 11:17 --------------------
It's a nice day to die my friend! |
|||
|
||||
| myth777 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 110 Регистрация: 30.3.2009 Репутация: -1 Всего: -1 |
Ага
|
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |