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