現在、カスタムベクトルクラスで角括弧のオーバーロードに問題があります。大括弧のオーバーロード=>演算子がオペランドと一致しません
私のクラスは基本的に次のようになります。
typedef uint32_t u32; // This is not actually here, but so you get the idea. Also, it is included in the problematic call's file
template<class T>
class JFFVector
{
public:
//Init and stuff
T& operator[](u32 iIndex)
{
return m_pData[iIndex + miDataOffset];
}
private:
T* m_pData;
u32 m_iDataOffset;
}
そして、このクラスの機能の中に、私は(* this)を呼び出すことができます[0]、すべてが動作します。 今私がいる問題は、次のようにメンバーを持つクラスである:
class TOtherClass
{
public:
// Stuff
void DoSomething() const
{
for (u32 i; i < m_tItems.size(); ++i)
m_tItems[i]->DoStuff(); // Which is a const function
}
private:
JFFVector<const JFFItem*> m_tItems;
}
「私のコンパイラは
なしオペレータを言って私の顔でエラーがスローされますということで問題は[] constのJFFVector [U32]
のtypedefのuint32_tのU32:「
オペランドの型があるこれらのオペランドにマッチします。
私が気づいたことの1つは、m_tItemsをポインタにすると、 "(* m_tItems)[i] - > DoStuff()"を実行して正常に動作することです。しかし、私は非ポインタバージョンではないのになぜこれが動作するのか分かりません。 (また、私はu32の代わりに単純なintを使ってみましたが、驚きはありませんでした)
私は何を間違えたのですか?そして、それほど些細なことがなければ、なぜそれは間違っていますか?
(これは既に回答されている場合は申し訳ありませんが、私は同様の問題を探してみましたが、この問題のように見える何も見つからなかった)
右を実装します。 Dayum。私は実際にその間違いのために落ちた。 ありがとうございました! – Thex