这里我有一个函数,它创建一个字符串,将它分配给一个字符串指针,然后返回它。我尝试返回一个常规字符串,它工作正常。但是当我集成指针并取消引用它们时,我的程序崩溃了。当我尝试调试它时,这是我得到的消息:
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) 我正在编写一个我要绘制卡片的程序,然后删除它以便不再绘制它.
我有一个卡片向量(包含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)
我真的不知道该怎么做,希望有人可以帮助我,提前谢谢!