如何通过指针更改类成员值

时间:2018-06-12 23:46:44

标签: c++ class pointers class-members

此函数是名为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;
    }
}

通过使用前面的表达式,程序编译但是当我尝试运行它时它会给我一个分段错误错误。

问题是:

  • 如何通过指针修改类成员值?我试过的是什么 在这里但我得到了一个分段错误。

  • 这个表达中导致分段错误的是什么?

提前感谢。

2 个答案:

答案 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