Я пытаюсь реализовать класс числовых векторов. Я использую 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, но не могу понять.
Пожалуйста, помогите мне.
Я понимаю сейчас! Большое спасибо! –
Обычно щелкнуть «галочку» рядом с ответом, если это было наиболее полезно для вас :) В любом случае, рад, что я мог бы помочь! – Xion