Я пытаюсь реализовать класс числовых векторов. Я использую шаблон Qt QVector, который похож на вектор STL
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 :: operator << не вызывается вообще. Ошибок нет, программа компилируется и запускается, но ничего не делает. Однако это работает: </p>
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, но не могу понять.
Пожалуйста, помогите мне.