2

コンパイラが 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 操作を使用する関数がもう 1 つありますが、正常に動作しています。

誰でもこれで私を助けることができますか?

これでも同じエラーが発生します。

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

        items.push_back(i);
    }


}
4

1 に答える 1

2

問題は、静的キャストが戻ったときにostringstreamが破棄されることだと思います。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);
        }

    }

}
于 2013-02-16T00:32:17.223 に答える