テンプレートクラスのContains()メソッドを使用しようとしていますが、奇妙な引数変換エラーが発生しています。コンパイラがconstパラメータを変更しているようです
エラーC2664: 'DynamicArrayは::(定数E)のconstが含まれていますBOOL':E =共同で 'constの共同*' から '共同* constの' から引数1を変換することはできません
変換を失い修飾子
これは、関連するテンプレートクラスコードです。
template <class E>
class DynamicArray
{
bool Contains (const E element) const;
// Other code...
};
template <class E>
bool DynamicArray<E>::Contains(const E element) const
{
// Other code...
}
に行われたコールは、私がAnimatesJoint関数のシグネチャでのconstを削除した場合の方法はそうここ
bool ASMState::AnimatesJoint(const Joint* pJoint) const
{
return m_animatedJoints.Contains(pJoint);
}
関連するテンプレートクラスのコードASMState.h
class ASMState
{
DynamicArray<Joint*> m_animatedJoints;
// Other members...
bool AnimatesJoint(const Joint* pJoint) const;
// Other methods...
};
で行われている含まれていそのように、bool ASMState::AnimatesJoint(Joint* pJoint) const
、コードがコンパイルされます。できる限り私はそこにconstを保ちたいと思いますが、そのパラメータが私が書いたものから変わるように見える理由はわかりません。すなわち、コンパイラによれば、const Joint *
からJoint *const
までである。
私は、Visual Studio 2013 Expressの
コンパイラエラーにつながる問題がリンクされたスレッドのいずれかによって解決されないので、質問は重複しません。これはエラーにつながる 'Joint * const'変換ではなく、' Joint const * 'から' Joint * '変換への無効な' Joint * const'変換ではありません。また、後者の問題は、他の(ポインタではない)タイプと同じではありません。 – davidhigh