2013-06-25 80 views
0

如何創建一個boost::numeric::ublas::c_vector<float, 3>的子類,其中的三個元素可以使用.x .y或.z訪問,並且構造函數的形式爲vec3(float x, float y, float z);。我想使用boost向量,因爲我不想爲自己的類的所有運算符和數學函數編寫功能,而且我已經使用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

不要讓一個子類,你可以在未來的問題,因爲基類成員函數都是非虛。在這種情況下,首選構圖(使這個類的對象成爲你的類的一員)。另外Herb Sutter建議永遠不要派生具體的類(特別是在C++中,因爲存在虛擬/非虛擬成員函數存在的系統)。