此函数是名为ClipInterface的类的一部分,它提供GUI 编辑给定Clip对象的某些成员值。
要完成,我正在使用这个接收Clip对象的函数 通过指针,然后它访问它的一些成员来修改它们如下:
void ClipInterface::update(Clip* _clip){
//p_clip is a pointer declared in the .h file so it can
//work across the whole class
p_clip = _clip;
for (int i = 0; i < p_clip -> stepSequence.size(); ++i){
stepToggles[i] -> active = p_clip -> stepSequence[i];
}
for (int i = 0; i < p_clip -> stepSequence.size(); ++i){
*p_clip -> stepSequence[i] = stepToggles[i] -> active;
}
}
通过使用前面的表达式,程序编译但是当我尝试运行它时它会给我一个分段错误错误。
问题是:
如何通过指针修改类成员值?我试过的是什么 在这里但我得到了一个分段错误。
这个表达中导致分段错误的是什么?
提前感谢。
答案 0 :(得分:2)
*p_clip -> stepSequence[i] = stepToggles[i] -> active;
在这里p_clip
已经是你应该使用的指针;
p_clip -> stepSequence[i] = stepToggles[i] -> active;
要通过指针访问结构的成员,请使用箭头操作符。
答案 1 :(得分:1)
您可以使用其中任何一种
(*p_clip).stepSequences[i] = stepToggle
首先取消指针以获取对象,然后获取成员
或者使用等效且具有相同效果的箭头操作符
p_clip->stepSequences[i] = stepToggle