c++ - 基本分割错误
问题描述
我遇到了一个我似乎无法解决的最简单的问题。
我有一个名为 UI 的类,在 UI.h 中我存储了一个名为 index 的变量,并且有一个方法 setup(),它设置 index 的值:
class UI {
public:
float index;
public:
void setup(float p_selectedMicrobeIndex);
};
设置的实现是:
void UI::setup(float p_selectedMicrobeIndex)
{
microbeIndex = p_selectedMicrobeIndex;
}
在我的游戏类 .h 文件中,我声明了一个名为 UI 的类的实例:
#include "UI.h"
class Game {
private:
UI* ui;
};
在 Game.cpp 中,我正在运行 UI.setup() 来设置索引的值。
ui->setup(0.0f);
我很难理解为什么这会导致分段错误。
任何帮助,将不胜感激。谢谢。
解决方案
您正在创建一个指针,但您没有创建一个实例来指向它。您应该创建一个实例
UI ui;
ui.setup(0.0f);
或者用指针来做(虽然我不明白为什么)
UI* ui = new UI;
ui->setup(0.0f);
这样指针实际上指向了一些合理的东西。
UI* ui;
只是为指向对象的指针保留内存,UI
但没有为该UI
对象保留内存。因此,设置失败,因为您尝试写入未分配的内存。
推荐阅读
- reactjs - 如何在不关闭抽屉的情况下滚动标签?
- python - 在本地运行 slack bolt (Python) 时出错
- c# - 如何在两条动画曲线之间切换,以便播放数组中的第一条动画曲线,当它结束时,它开始播放第二条?
- postgresql - 错误:列“int4”指定了多次
- android - 如何使微调器项目列表四舍五入?不是微调器本身,而是下拉列表
- amazon-web-services - 创建 IAM 内联策略引发 API 错误(描述您选择的 AMI 时发生错误您无权执行此操作)
- docker - 最小化 Docker 上 Gradle 项目的构建时间
- amazon-web-services - 如何使用 cloudformation 管理不同的环境
- .net-core - Razor 组件:我可以在主布局中创建多个(上游渲染)部分吗?
- python - Flask 在标准输出被重定向时禁用标准输出