数値ベクトルのクラスを実装しようとしています。私は私を混乱させる事がstatic_castの不思議な動作
VectorF& VectorF::operator << (const VectorF& rightSide)
{
static_cast<VectorFloat>(*this) << static_cast<VectorFloat>(rightSide);
return *this;
}
がまったく動作しないということである
typedef float ArithmeticF;
typedef QVector<ArithmeticF> VectorFloat;
class VectorF : public VectorFloat
{
/// appends the rightSide to the end
VectorF& operator << (const VectorF& rightSide);
}
STLベクトルに類似しているQtのテンプレートQVectorを使用しています。私は行ごとにデバッグしようとしましたが、VectorFloat :: operator < <はまったく呼び出されません。エラーはなく、プログラムはコンパイルされ実行されますが、何もしません。しかし、これは動作します:
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