У меня есть следующий код, когда я запускаю код ниже, я получаю ошибку времени выполнения R6025 в Visual C++ '
Параметр CommandParameterAndValue ("Ключ", "Значение");
parameters.AddParameter(& param);
parameters.HasParameter("akeyval");
Я потерян, какие-то идеи? Это как-то связано с кастингом?
typedef std::vector<iCommandParameter *> ParamsVectorList;
class CommandParametersList
{
public:
.... functions here ....
void AddParameter( iCommandParameter *param );
bool HasParameter( std::string parameterKey );
protected:
ParamsVectorList m_parameters;
};
void CommandParametersList::AddParameter( iCommandParameter *param )
{
m_parameters.push_back( param );
}
bool CommandParametersList::HasParameter( std::string parameterKey )
{
ParamsVectorList::iterator it;
CommandParameterAndValue *paramItem = NULL;
bool returnValue = false;
for ( it = m_parameters.begin(); it != m_parameters.end(); it++ )
{
paramItem = static_cast<CommandParameterAndValue *>( *it );
if ( paramItem->GetKey().compare( parameterKey ) == 0 )
{
returnValue = true;
break;
}
}
return returnValue;
}
Мне нужно больше информации, чтобы дать полный ответ, но если вы посмотрите здесь: http://support.microsoft.com/kb/125749
Эта ошибка во время выполнения означает, что вы пытались вызвать чистую виртуальную функцию - она не могла найти реализацию. Я бы предложил запустить через отладчик и найти, какая строка кода вызывает эту ошибку. Чем это должно быть легко понять и исправить. Вероятно, это происходит здесь:
if ( paramItem->GetKey().compare( parameterKey ) == 0 )