Здравствуйте, Аноним, Вы писали:
А>как избежать здесь явного дуублирования? А>в с++ это решалось в compile-time с помощью шаблонов, а как это можно сделать в лиспе?
Немного не понял. Тебе обобщённые методы нужны? Или лучше покажи как сделал бы н С++.
Re[2]: [lisp]как шаблон в с++
От:
Аноним
Дата:
05.05.08 11:25
Оценка:
Здравствуйте, Turtle.BAZON.Group, Вы писали:
TBG>Здравствуйте, Аноним, Вы писали:
А>>как избежать здесь явного дуублирования? А>>в с++ это решалось в compile-time с помощью шаблонов, а как это можно сделать в лиспе?
TBG>Немного не понял. Тебе обобщённые методы нужны? Или лучше покажи как сделал бы н С++.
хочется на лиспе такого поведения:
template<class T=int> class A {
T *slot;
public:
A() {
slot = new T;
}
};
template<class T=char> class B : public A<T> {
T *slot;
public:
// какие-то дополнительные функции
};
//...
A<> a;
A<char> aa; // переопределить тип T без создания пустого наследника
B<> b;
Здравствуйте, Turtle.BAZON.Group, Вы писали:
TBG>Здравствуйте, Аноним, Вы писали:
А>>A<char> aa; // переопределить тип T без создания пустого наследника
TBG>Ну если я правильно понял, то конкретно эту задачу можно сделать приблизительно так:
Но тогда подстановка происходит в runtime. Кроме того в каждом объекте будет храниться лишний атрибут, который кроме как в момент инициализации использоваться не будет..
Re[5]: [lisp]как шаблон в с++
От:
Аноним
Дата:
05.05.08 15:57
Оценка:
TBG>>Ну если я правильно понял, то конкретно эту задачу можно сделать приблизительно так: А>Но тогда подстановка происходит в runtime. Кроме того в каждом объекте будет храниться лишний атрибут, который кроме как в момент инициализации использоваться не будет..
И еще один момент — в с++ наглядно видно, где слоты, а где спецификаторы шаблона. В вашем же коде на лиспе, этого явно указать не получится.
Здравствуйте, Аноним, Вы писали:
TBG>>>Ну если я правильно понял, то конкретно эту задачу можно сделать приблизительно так: А>>Но тогда подстановка происходит в runtime. Кроме того в каждом объекте будет храниться лишний атрибут, который кроме как в момент инициализации использоваться не будет.. А>И еще один момент — в с++ наглядно видно, где слоты, а где спецификаторы шаблона. В вашем же коде на лиспе, этого явно указать не получится.
Ну не знаю. В CLOS так не силён. Остаётся, конечно, последний выход — макрос...