Подкласс вектора повышения в Stack Overflow

Как я могу сделать подкласс boost::numeric::ublas::c_vector<float, 3> чьи три элемента могут быть доступны с помощью .x .y или .z и имеют конструктор в форме vec3(float x, float y, float z);, Я хотел использовать вектор повышения, потому что я не хотел писать функциональность для всех операторов и математических функций класса самостоятельно, и я уже использовал библиотеку повышения.

Например:

foo = vec3(2.5f, 0.0f, 0.0f);
bar = vec3(2.0f, 0.0f, 0.0f);

foo += bar;
cout << foo.x; // prints 4.5

0

Решение

Не создавайте подкласс, так как в будущем у вас могут возникнуть проблемы, потому что функции-члены базового класса не являются виртуальными. Вместо этого предпочтите композицию в этом случае (сделайте объект этого класса членом вашего класса). Также Херб Саттер предлагает никогда не выводить конкретные классы (особенно в C ++, поскольку существует система виртуальных / не виртуальных функций-членов).

2

Другие решения

Других решений пока нет …