переопределение функции

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
DeeJayC
Сообщения: 497
Зарегистрирован: 17 фев 2004, 11:26
Откуда: Ленинград (который Город на Неве)
Контактная информация:

[quote="LGL"]ситуация такая:

class MyClass
{
AnsiString name]

class MyClass
{
AnsiString name;
virtual AnsiString MyFunction();
MyClass* next;
};

----------

class c2 : public MyClass {
};

AnsiString c2 :: MyFunction() {
return "ХЗЧ";
};
--------------------
"Особое внимание начинающих аквариумистов хотим обратить на то, что рыбки никогда не спят на спинке!" (c)

viel spass, DeeJayC
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Можно сделать так, как предоложил ДиДжей, но тогда придётся создавать столько разных классов-наследников, сколько нужно иметь разных виртуальных методов. Есть другой вариант. Класс должен хранить указатель на функцию, которая будет устанавливаться кем-то снаружи. Этой функции будет передаваться указатель на класс. Таким образом проблему множества классов сведём к проблеме множества функций.

P.S. Это всё теоретические рассуждения. А если посмотреть с логической точки зрения - то всё это приличный изврат. Я считаю, что проблема надумана и можно всё сделать намного проще.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Sulik
Сообщения: 11
Зарегистрирован: 09 июл 2004, 12:18
Откуда: Москва

Моё мнение что предложение Ромео изящнее ДиДжейского, и при правильно реализации будет красиво работать. Но всё таки зачем это надо??? Может обойтись конструкцией switch-case, добавивь исчо одно поле в класс???
Ответить