[問題] 私有繼承 operator overloading
開發平台(Platform):
Linux Kernel version 3.5
Ubuntu 12.10 64-bit
g++ 4.7.2
問題(Question):
是這樣的,我實作了一個template稱為Vector3,其中有許多operator,
接著我做了一個class叫作Color去私有繼承Vector3<int>。
我的問題是derived class要怎麼去使用base class的operator會比較恰
當?目前我是想到以下這個方法,但總覺得怪怪的。
// vector3.h
template <typename T>
class Vector3 {
public:
...
Vector3 operator+(const Vector3 &vector) const;
...
protected:
T x_, y_, z_;
};
// color.h
class Color : private Vector3<int> {
public:
...
Color(const Vector3<int> &vector) : Vector3<int>(vector) {}
Color operator+(const Color &color) const;
...
};
// color.cpp
Color Color::operator+(const Color &color) const {
return Color(
dynamic_cast<const Vector3<int> &>(color) +
dynamic_cast<Vector3<int> &>(*this));
}
備註:
當然有人會說為什麼不直接宣告一個Vector3<int> color,這是因為我單純不想
要access function叫作x()、y()、z(),我可能太龜毛了XD
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.135.100.54
→
04/05 14:55, , 1F
04/05 14:55, 1F
→
04/05 16:10, , 2F
04/05 16:10, 2F
→
04/05 16:10, , 3F
04/05 16:10, 3F
→
04/05 16:11, , 4F
04/05 16:11, 4F
→
04/05 16:12, , 5F
04/05 16:12, 5F
→
04/05 16:13, , 6F
04/05 16:13, 6F
→
04/05 16:14, , 7F
04/05 16:14, 7F
→
04/05 16:14, , 8F
04/05 16:14, 8F
→
04/05 16:15, , 9F
04/05 16:15, 9F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章