c++ - 如何通过指针更改类成员值
问题描述
这个函数是一个叫做 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] = stepToggles[i] -> active;
这里p_clip
已经是你应该使用的指针;
p_clip -> stepSequence[i] = stepToggles[i] -> active;
要通过指针访问结构的成员,请使用箭头运算符。
推荐阅读
- java - LeetCode - LeetCode 提交时通过的解决方案,但在 IDE 中返回 null
- angular - 反应式表单/使用提供者服务在组件之间传递数据。- REFRESH/RELOAD 期间应用程序中断
- c# - 用户干预我的应用程序时立即触发?
- php - JQuery Ajax 不向数据库发送数据
- javascript - 是否可以在一个页面上拥有多个 ARIA 实时区域并让屏幕阅读器同时宣布两者?
- docker - 为什么我不能通过 Docker-compose 将 spring-boot 容器连接到 mysql sql 容器?
- c++ - 如何在 C++ 中最大化 SSD I/O?
- date - 将 Vuetify 格式日期更改为特定格式
- docker - 无法使用 docker run -e 或 --env-file 选项设置环境变量
- javascript - 个人资料查找(freecodecamp)挑战