Информация об изменениях

Сообщение Re[3]: Статические классы от 20.11.2015 13:23

Изменено 20.11.2015 13:31 night beast

Здравствуйте, Khimik, Вы писали:

K>Может быть я вас не понял, но по-моему не оно.


K>Фунцию vector(vect:tvector) написать можно, но удобнее было бы вызывать её через точку (d:=v.length), иначе можно запутаться если этих функций много.


добавить в уже существующий класс новый метод?
не, такого в плюсах нет.
только через обертку или наследника:
struct vector {
   float x,y,z;
};

struct vector_view {
   vector const & m_ref;
   vector_view ( vector const & src ) : m_ref( src ) { }
   operator vector const & ( ) const { return m_ref; }
   float length ( ) const;
};

void test ( vector const & );

int main () {
   vector v;
   vector_view vv( vv );
   test( vv );
}


накладных расходов быть не должно. компиляторы нынче умные.
Re[3]: Статические классы
Здравствуйте, Khimik, Вы писали:

K>Может быть я вас не понял, но по-моему не оно.


K>Фунцию vector(vect:tvector) написать можно, но удобнее было бы вызывать её через точку (d:=v.length), иначе можно запутаться если этих функций много.


добавить в уже существующий класс новый метод?
не, такого в плюсах нет.
только через обертку или наследника:
struct vector {
   float x,y,z;
};

struct vector_view {
   vector const & m_ref;
   vector_view ( vector const & src ) : m_ref( src ) { }
   operator vector const & ( ) const { return m_ref; }
   float length ( ) const;
};

void test ( vector const & );

int main () {
   vector v;
   vector_view vv( vv );
   test( vv );
}


накладных расходов быть не должно. компиляторы нынче умные.

а насчет много -- это для разных метрик что-ли?