2013-06-25 3 views
0

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

Например:

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

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

ответ

2

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