C++ 链表、向量和指针问题
好的,这是我的问题:C++ 链表、向量和指针问题,c++,class,pointers,vector,C++,Class,Pointers,Vector,好的,这是我的问题: 我实现了一个Move类,其中一个变量Move*subMove指向一个“subMove” 我有一个列表(vector的Moves,我使用vector::iterator循环遍历) 我有一个全局移动对象(比方说链接列表的“根”),我们的函数最初是用它调用的 我正在尝试将当前移动(从循环)分配给当前根的子移动字段 这就是问题产生的原因 我的代码(大致)如下所示: int Game::doSth(Move & pv) { vector<Move> m
- 我实现了一个
,其中一个变量Move类
指向一个“subMove”Move*subMove
- 我有一个列表(
的vector
s,我使用Move
循环遍历)vector::iterator
- 我有一个全局移动对象(比方说链接列表的“根”),我们的函数最初是用它调用的
- 我正在尝试将当前移动(从循环)分配给当前根的子移动字段
int Game::doSth(Move & pv)
{
vector<Move> moves;
this->possibleMoves(moves);
for (std::vector<Move>::iterator move = moves.begin(); move!=moves.end(); ++move)
{
// Do sth
int subResult = this->doSth(*move);
if (someConditionIsTrue)
{
// yep, we want to store THIS move as a submove
// This works - without memory errors -
// but still something goes weird, so I'd prefer creating a new object
pv.subMove = &(*move);
// Also tried something along the lines of `pv.subMove = new Move(*move)`
// - yes there is an appropriate copy constructor -
// but this leads to a `segmentation fault` error
}
}
// return something;
}
int游戏::doth(移动和pv)
{
矢量运动;
此->可能移动(移动);
对于(std::vector::iterator move=moves.begin();move!=moves.end();++move)
{
//做某事
int subResult=this->doSth(*move);
如果(某个条件是真的)
{
//是的,我们想将此移动存储为子移动
//这可以工作-没有内存错误-
//但还是有些奇怪,所以我更喜欢创建一个新对象
pv.subMove=&(*move);
//还尝试了类似“pv.subMove=new Move(*Move)的内容`
//-是,有适当的副本构造函数-
//但这会导致“分段错误”错误
}
}
//归还某物;
}
有什么想法吗?“不起作用”是一个不充分的问题描述。代码可以编译,对吗?问题是什么?@KonradRudolph问题很简单:为什么
pv.subMove=new Move(*Move)代码>触发分段错误,而pv.subMove=&(*move)代码>有效(即使结果有点混乱…?你有一个合适的副本结构可以进行深度复制吗?@JoachimPileborg,请将你的答案作为一个典型的答案发布,我将很高兴立即接受它,这样你就可以得到你应得的所有荣誉。是的,就是这样。切中要害。大头钉såmycket!:-)您的doSth
函数是否使用*move
做了一些疯狂的事情?