Добавление новых методов в класс динамически
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Добавление новых методов в класс динамически - 2010-01-29 13:15:12.510000
|
|
|
codeismy.name
Сообщений: 618
Оценки: 0
Присоединился: 2009-07-19 00:30:13.200000
|
Собстно вопрос следующий: есть класс A у него есть метод B как мне "на лету" добавить в класс метод С (если это вообще возможно) или ещё как вариант можно ли сделать так.. .к инициированому объекту добавить новые методы из другого класса как вариант можно сделать новый класс и для него унаследовать абсолютно всё остальные классы но это ж быдлокод будет… тем более не все методы из остальных классов могут быть нужными. п.с. это нужно для динамической подгрузки модулей ядра.
|
|
|
RE: Добавление новых методов в класс динамически - 2010-01-29 14:26:30.140000
|
|
|
rgo
Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
|
Предположу, что речь идёт о C++. Никак. Если речь не о лиспе или чём-нибудь подобном, то никак нельзя. Но не совсем понятно зачем это нужно. Вот смотри, абстрактный драйвер символьного устройства, интерфейс:class char_device
{
public:
virtual int open (const char *name) = 0;
virtual int close () = 0;
virtual size_t write (void *buf, size_t size) = 0;
virtual size_t read (void *buf, size_t size) = 0;
}; Ну и? какую функцию в него добавлять? Допустим мы каким-то хитрым способом подгрузим модуль какого-нибудь символьного устройства, который при подгрузке добавит в свой список методов метод lseek. Допустим. Подгрузили. Имеемchar_device *dev; Как вызвать метод lseek объекта, на который указывает dev? ps. Динамически добавить метод – это значит динамически изменить тип, так? А это уже попахивает динамической типизацией, которая C++'у и не снилась.
|
|
|
RE: Добавление новых методов в класс динамически - 2010-01-29 15:09:34.210000
|
|
|
horiz
Сообщений: 892
Оценки: 0
Присоединился: 2008-11-03 18:33:09.006666
|
Судя по разделу, речь вряд ли идет о C++. Скорее PHP. Динамически добавлять методы вроде нельзя. Хотя здесь есть тонкость: можно копнуть в сторону спецметода __call() Ну а если несколько классов должны содержать совершенно одинаковые методы, так сделай абстрактный класс с этими методами и унаследуй от него свой классы.
|
|
|
RE: Добавление новых методов в класс динамически - 2010-01-29 15:33:07.730000
|
|
|
codeismy.name
Сообщений: 618
Оценки: 0
Присоединился: 2009-07-19 00:30:13.200000
|
да, извините, не указал язык… PHP а де вообще про спецметоды почитать? и попробовать.. я просто пробовал у себя на серваке разные спецметоды вызывать и чёто не вышло совсем
|
|
|
RE: Добавление новых методов в класс динамически - 2010-01-29 16:41:37.513333
|
|
|
horiz
Сообщений: 892
Оценки: 0
Присоединился: 2008-11-03 18:33:09.006666
|
quote:
а де вообще про спецметоды почитать? В нете поищи, инфы тьма. Если в двух словах: Метод __call() будет выполнен, если обратились к несуществующему методу. function __call($method_name, $arg_array){
//твой код
} При вызове несуществующего метода будет вызван метод __call() с аргументами $method_name - имя несуществующего метода, $arg_array - массив аргументов, которые ему передавали. Про нерабочие спецметоды - это сильно пахнет PHP4.
|
|
|
RE: Добавление новых методов в класс динамически - 2010-01-31 14:55:43.393333
|
|
|
codeismy.name
Сообщений: 618
Оценки: 0
Присоединился: 2009-07-19 00:30:13.200000
|
та я возможно не ту версию пыхпыха на серваке собрал… перепроверю :)
|
|
|
|
|