Все работает, пока компилятор не попытается выполнить операцию 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);
}}
Я думаю, что проблема заключается в том, что поток 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);
}
}
}
Других решений пока нет …