История изменений
Исправление alysnix, (текущая версия) :
А в Си++ общих интерфейсов нет ни у строк, ни у массивов, ни у словарей.
потому что с++ делает бизнес на эффективности. а такие вот интерфейсы утяжеляют класс, а реальная применимость всего этого довольно сомнительна.
потому они делают это через теплейты, или пользовательские интерфейсы.
типа пусть нам нужны две функции ff() и fff() для неких неродственных классов a,b,c.
тогда мы рисуем интерфейс
class face0 {
public:
void ff() = 0;
void fff() = 0;
}
и реализуем его для a,b,c.
/// for class <a>
class face_a: public face0 {
a& _ref; ///reference to <a> object
public:
face_a(a& fref): _ref(fref) {}
void ff() override {.... };
void fff() override {.....};
}
/// for class <b>
...
и тогда наша функция будет иметь заголовок
xxx(face0& fobj)
принимая ссылку на интерфейс face0. то есть мы породнили неродственные классы(не меняя их) через свой интерфейс и обошли их неродственность.
Исходная версия alysnix, :
А в Си++ общих интерфейсов нет ни у строк, ни у массивов, ни у словарей.
потому что с++ делает бизнес на эффективности. а такие вот интерфейсы утяжеляют класс, а реальная применимость всего этого довольно сомнительна.
потому они делают это через теплейты, или пользовательские интерфейсы.
типа пусть нам нужны две функции ff() и fff() для неких неродственных классов a,b,c.
тогда мы рисуем интерфейс
class face0 {
public:
void ff() = 0;
void fff() = 0;
}
и реализуем его для a,b,c.
class face_a: public face0 {
a& _ref; ///reference to <a> object
public:
face_a(a& fref): _ref(fref) {}
void ff() override {.... };
void fff() override {.....};
}
и так далее
и тогда наша функция будет иметь заголовок
xxx(face0& fobj)
принимая ссылку на интерфейс face0. то есть мы породнили неродственные классы(не меняя их) через свой интерфейс и обошли их неродственность.