如何通过指针更改类成员值
Posted
技术标签:
【中文标题】如何通过指针更改类成员值【英文标题】:How to change class member value by pointer 【发布时间】:2018-06-12 23:46:43 【问题描述】:这个函数是一个名为 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;
通过使用前面的表达式,程序可以编译,但是当我尝试运行它时它给了我一个分段错误错误。
问题是:
如何通过指针修改类成员值?我试过什么是 在这里,但我遇到了分段错误。
这个表达式中的什么导致了分段错误?
提前致谢。
【问题讨论】:
回想一下,->
的作用是取消对指针的引用。
*p_clip->stepSequence[i]
应该是 p_clip->stepSequence[i]
(不是 *
)。您也可以考虑将 2 个循环合并为 1 个循环。
【参考方案1】:
*p_clip -> stepSequence[i] = stepToggles[i] -> active;
这里的p_clip
已经是你应该使用的指针了;
p_clip -> stepSequence[i] = stepToggles[i] -> active;
要通过指针访问结构的成员,请使用箭头运算符。
【讨论】:
【参考方案2】:你可以使用其中任何一种
(*p_clip).stepSequences[i] = stepToggle
首先取消引用指针以获取对象,然后获取成员
或者使用等价的箭头操作符,效果一样
p_clip->stepSequences[i] = stepToggle
【讨论】:
以上是关于如何通过指针更改类成员值的主要内容,如果未能解决你的问题,请参考以下文章
C++|详解类成员指针:数据成员指针和成员函数指针及应用场合