テンプレート クラスがあります ( Node
BST 内の内部クラスです)。ここで、メモリを解放します。キーまたは値 (またはその両方) のいずれかがポインターである可能性があることを考えると、それらがポインターである場合、それらを解放する方法を理解する必要があります。
例を参照してください。
~Node( void )
{
if ( is_pointer< TValue >( Value ) )
{
delete Value;
Value = NULL;
}
if ( is_pointer< TComparable >( Key ) )
{
delete Key;
Key= NULL;
}
}
関数の背後にある実装はis_pointer< T >
機能しますが (ここから取得)、キーまたは値のいずれかで削除を押すとすぐに、次のようになります。
Error 13 error C2440: 'delete' : cannot convert from 'esc::Shader' to 'void *' c:\programming\c++\git\escalator\engine\engine\searchtree.hpp 131
Error 14 error C2440: 'delete' : cannot convert from 'esc::ShaderComparable' to 'void *' c:\programming\c++\git\escalator\engine\engine\searchtree.hpp 137
Error 12 error C2679: binary '=' : no operator found which takes a right-hand operand of type 'int' (or there is no acceptable conversion) c:\programming\c++\git\escalator\engine\engine\searchtree.hpp 130
static_cast
、dynamic_cast
、などを試しましreinterpret_cast
たが、どちらも機能していないようです。
良い解決策は何ですか?