Вектор push_back, вызывающий необработанное исключение

Все работает, пока компилятор не попытается выполнить операцию push_back.
в условии if возвращаются правильные значения.
Я объявил предметы как:

vector<int> items; // inside the header file.

// внутри .cpp файла

void MsPs::findnSort()
{
for(int i = 1; i<50 ; i++)
{

string temp = static_cast<ostringstream*>( &(ostringstream() << i) )->str();    // TO convert int i to a string temp
if(findSupport(temp) >= MIS[i])
{
items.push_back(i);
}

}

}

появляется следующая ошибка:

Unhandled exception at 0x5052ad4a (msvcp100d.dll) in PrefixScan.exe: 0xC0000005: Access violation reading location 0x3d4cccd1.

PS: у меня есть еще одна функция, использующая операцию push_back, и она работает нормально.

Кто-нибудь может мне с этим помочь?

Даже это дает ту же ошибку:

void MsPs::findnSort()
{
for(int i = 1; i<50 ; i++)
{

items.push_back(i);
}}

2

Решение

Я думаю, что проблема заключается в том, что поток ostring разрушается, когда возвращается статическое приведение. Таким образом, ваш указатель болтается, когда str() называется. Попробуйте это вместо этого:

void MsPs::findnSort()
{
for(int i = 1; i<50 ; i++)
{
ostringstream blah;
string temp = (blah << i).str();

if(findSupport(temp) >= MIS[i])
{
items.push_back(i);
}

}

}
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]