私のコンテナに operator[] を実装しようとしました。しかし、私は本当に c++ に慣れていないので、実装にエラーがあるようです。
私はそれらを次のように宣言しました:
float& operator[](const int &idx);
const float& operator[](const int &idx) const;
これは問題ないはずです。チュートリアルからのコピー/貼り付けがほとんどです。これで、Quaternion.cpp は次のようになります。
float& Quaternion::operator[](const int &idx)
{
if(idx == 0)
{
return x;
}
if(idx == 1)
{
return y;
}
if(idx == 2)
{
return z;
}
if(idx == 3)
{
return w;
}
std::cerr << "Your Quaternion is only accessible at positions {0, 1, 2, 3}!"
<< std::endl;
return x;
}
const float& Quaternion::operator[](const int &idx)
{
if(idx == 0)
{
return const x;
}
if(idx == 1)
{
return const y;
}
if(idx == 2)
{
return const z;
}
if(idx == 3)
{
return const w;
}
std::cerr << "Your Quaternion is only accessible at positions {0, 1, 2, 3}!"
<< std::endl;
return x;
}
署名「const float& Quaternion::operator[](const int &idx)」のエラーが発生します。
以前に起こったもう 1 つのことは、境界を超えた場合に 0 を返すことができなかったことです。この問題が解決されたら、そうするかもしれませんが、以前はエラー メッセージが表示されていました。そのとき x を返しただけで、本当に不満です。