每当我打电话给dominoes.erase()哪种类型的std::vector<Domino>我都会出现分段错误; 即使我硬编码这个值.
一个单独的成员函数调用dominoes.push_back()加载数据,我可以用来pop_back()从向量中删除并返回一个多米诺骨牌,所以我知道那里有数据.我有一个在Domino对象上创建的复制构造函数,并且工作得很好.我把它缩小到了dominoes.erase().
Domino::Domino( const Domino &d ) {
left = d.getHighPip();
right = d.getLowPip();
}
Domino DominoCollection::drawDomino( void )
{
int index = random.nextNumber( dominoes.size() );
Domino d( dominoes[index] );
dominoes.erase( dominoes.begin() + index );
return Domino( d );
}
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激.谢谢!