1
我想實現一類數字向量。我使用Qt模板QVector這類似於STL矢量static_cast的神祕行爲
typedef float ArithmeticF;
typedef QVector<ArithmeticF> VectorFloat;
class VectorF : public VectorFloat
{
/// appends the rightSide to the end
VectorF& operator << (const VectorF& rightSide);
}
,混淆我的事情是,
VectorF& VectorF::operator << (const VectorF& rightSide)
{
static_cast<VectorFloat>(*this) << static_cast<VectorFloat>(rightSide);
return *this;
}
不會在所有的工作。我試圖逐行調試它,並且VectorFloat ::運算符< <根本不會被調用。沒有錯誤,程序編譯並運行,但什麼都不做。然而這個作品:
VectorF& VectorF::operator << (const VectorF& rightSide)
{
VectorFloat a = static_cast<VectorFloat>(*this);
VectorFloat b = static_cast<VectorFloat>(rightSide);
a << b;
*this = VectorF(a);
return *this;
}
我只是好奇它爲什麼如此。我試圖深入static_cast命令,但我無法弄清楚。
請幫幫我。
我明白了!非常感謝你! – 2012-01-01 10:55:33
習慣上點擊回答旁邊的「打勾」,如果它對你最有幫助的話:)無論如何,很高興我能幫上忙! – Xion 2012-01-01 10:57:36