![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| REZiaMIX |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 3.11.2007 Репутация: нет Всего: 4 |
Есть файл Class1.pl
в нем объявлен package Package1
Второй файл Main.pl в нем указано require для Class1.pl и объявлен еще один package
как результат этого, на строке с new Package1(); Undefined subroutine &AnotherPackage::Package1 called at A:\Projects\Main.pl line 22. Какие варианты решения вопроса? Заранее простите за глупый вопрос, только сел изучать Perl после C++ -------------------- ![]() |
||||
|
|||||
| reiserford |
|
|||
|
Новичок Профиль Группа: Awaiting Authorisation Сообщений: 22 Регистрация: 20.3.2012 Репутация: 1 Всего: 1 |
- new Package1()
+ new Package1 |
|||
|
||||
| REZiaMIX |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 3.11.2007 Репутация: нет Всего: 4 |
а если в конструктор класса передаются аргументы , например вот так:
my $packageFromAnotherFile = new Package1("arg1","arg2"); -------------------- ![]() |
|||
|
||||
| EcSYZ |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 79 Регистрация: 21.6.2007 Репутация: 1 Всего: 1 |
Не не, забудь про эти закидоны с "new Package();"
Надо нормально писать "Package->new();" PS: а ещё лучше сразу бы исходкики показал да и всё Это сообщение отредактировал(а) EcSYZ - 12.5.2012, 13:34 |
|||
|
||||
| REZiaMIX |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 3.11.2007 Репутация: нет Всего: 4 |
Спасибо -------------------- ![]() |
|||
|
||||
| DurRandir |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 335 Регистрация: 27.9.2009 Репутация: 14 Всего: 17 |
Indirect syntax (method-space-object) не то, чтобы абсолютное зло, но может привести к довольно трудноотливливаемым ошибкам и неочевидным сообщениям. В данном случае, вы вместо "Can't locate object method "new" via package" получаете то, что получаете). Причин для этого две:
1) Package1 подключается не в compile-time через use, а в runtime через require 2) У вас в AnotherPackage так же объявлен метод new, причём выше по коду, чем эти строчки. И для перла ваш вызов выглядит как my $packageFromAnotherFile = new(Package1()). Либо подключайте в compile-time дополнительные модули, либо не делайте indirect вызовов, т.е. пишите my $packageFromAnotherFile = Package1->new(); Это сообщение отредактировал(а) DurRandir - 12.5.2012, 13:36 |
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |