小编Oni*_*ros的帖子

取消引用指针(并返回)的问题

这里我有一个函数,它创建一个字符串,将它分配给一个字符串指针,然后返回它。我尝试返回一个常规字符串,它工作正常。但是当我集成指针并取消引用它们时,我的程序崩溃了。当我尝试调试它时,这是我得到的消息:

Unhandled exception at 0x00024cbf in Assignment 2.exe: 0xC0000005: Access violation reading location 0xcccccce4.

这是我的代码:

string* Recipe::getCookingTime()
// @intput: none
// @output: cooking time as a string
{
    string temp;
    string displayHrs;
    string displayMins;
    if( cookingTime_->numHours < 10 ) 
        displayHrs = intToString(0) + intToString(cookingTime_->numHours );
    else 
        displayHrs = intToString(cookingTime_->numHours );
    if( cookingTime_->numMinutes < 10 ) 
        displayMins = intToString(0) + intToString(cookingTime_->numMinutes);
    else 
        displayMins = intToString(cookingTime_->numMinutes);

    temp = "The time to cook the recipe is " + displayHrs + ":" + …
Run Code Online (Sandbox Code Playgroud)

c++ string pointers runtime-error dereference

5
推荐指数
1
解决办法
3699
查看次数

删除向量中间的用户定义元素

我正在编写一个我要绘制卡片的程序,然后删除它以便不再绘制它.

我有一个卡片向量(包含2个定义套装和值的结构的类)称为卡片,我真的不知道如何使用迭代器,这里是一个代码片段:

void Player::discardCard(CardDeck masterDeck)
{
    cout << "Erasing: " << masterDeck.getDeck().at(cardSelect).toString() << endl;
    /*Attempt1*/
    masterDeck.getDeck().erase(masterDeck.getDeck().begin()+cardSelect);

    /*Attempt 2*/
    vector<Card>::iterator itr;
    itr = masterDeck.getDeck().begin() + cardSelect;
    masterDeck.getDeck().erase(itr);
}
Run Code Online (Sandbox Code Playgroud)

cardSelect有我要删除的卡的位置.它是在0的边界和甲板的大小内随机生成的; 因此它不应指向超出界限的位置.

每次我编译我都会收到以下错误:

"Expression: vector erase iterator outside range"
Run Code Online (Sandbox Code Playgroud)

我真的不知道该怎么做,希望有人可以帮助我,提前谢谢!

c++ iterator vector erase user-defined

5
推荐指数
1
解决办法
663
查看次数