незванный гость писал(а):
Ну, во-первых, считать встроенные типы отклонением -- очень сильное заявление. Потому они и встраиваются в язык, что важны для практичекого применения.
Ну так правильно. Отклонение от ОО-модели, важное для практического применения.
Цитата:
Хорошо бы задать ограничения на TR, TD -- чтобы при инстанцизации шаблона получать внятное сообщение о том, что класс-параметр не удовлетворяет требованиям шаблона, а не нечто нечленораздельное.
Правильно, шаблоны этого не позволяют. А если позволят, то окончательно превратятся в ОО-идеологию.
Цитата:
Цитата:
Мы пишем функцию для базового класса, который обязан иметь нужные нам методы. А все разновидности вещественных чисел -- это должны быть его потомки.
Это утверждение я не понял.
Так положено в джаве. Сама фирма Сан часто пишет целые библиотеки на основе просто интерфейсов (интерфейс в понятиях си++ -- это класс, в котором все функции чисто виртуальные). А потом сторонние производители их "имплементят", то есть, пишут классы. В самих функциях, которые написаны Саном об этом даже не знают.
Цитата:
Ваша идея с SingleParameterFloatFunction тоже имеет определенные проблемы. Первая -- поскольку все -- методы, то как передать имя метода в функцию.
А зачем передавать имя метода в функцию? Как я понял, Ваш код ищет ноль математической функции. Так что не надо путать математическую функцию и функцию в языке программирования. В Ваш код должен быть передан объект типа функция.
Цитата:
Ну хорошо, я ищу не корень, а минимум. У меня есть класс -- ГеомТело, у него методы -- площадьПоверхности() и объем(). Что будем делать? Писать адаптеры на каждый метод?
Не понял. Минимум чего Вы хотите найти?
Цитата:
Причем именно писать, без template'ов-то. Другая проблема -- а что будем делать с уже существующими классами? Они-то не могут быть выведены из Ваших предков.
Просто задача абстрактная. В Си++ Вы, кстати, тоже не сможете передать в Вашу функцию адрес функции-члена -- тип не тот. То есть, Вам тоже придётся написать адаптор.
Цитата:
Но я не вижу греха в отклонении от ОО.
Я тоже не вижу в этом греха. Я его (отклонение) просто вижу. И говорю, что оно есть. Не более.
Цитата:
Приведу пример -- на процессорах с требованием выравнивания компилятор будет сортировать члены так, чтобы минимизировать потери памяти. То есть, все double -- в начало, все bool -- в конец. Но вот предок будет идти в начале, даже если он нарушает выравнивание.
Вы ше сами сказали, что реализация -- не аргумент. И тем не менее, я не понимаю, почему предка нельзя так же разложить, как и член?
Цитата:
На концептуальном уровне -- объект обладает своими атрибутами. То есть -- нет объекта, нет атрибута.
То есть, Вы хотите сказать, что если в объекте есть член типа "целое", то в отсутствии объекта понятие целого тоже исчезает?
Цитата:
Связь же между классом и наследником -- это специализация. То есть, всякий наследник есть всегда подкласс предка.
С членами тоже самое. Если членов несколько, то имеет место множественное наследование. Например, 3-вектор -- это просто наследник трёх экземпляров класса "вещественное число".
Цитата:
Что же касается Вашего примера с тензором, то я бы сказал так -- поскольку скаляр есть тензор нулевого ранга, то выводить можно. Но вот вектор длины один я бы выводить из скаляра не стал. Как видите, провожу линию, руководствясь провозглашенными принципами.
А я не понял.
Скажем так: член -- это просто именованный предок. А предок -- это просто безымянный член.