首页 > 解决方案 > 基本分割错误

问题描述

我遇到了一个我似乎无法解决的最简单的问题。

我有一个名为 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);

我很难理解为什么这会导致分段错误。

任何帮助,将不胜感激。谢谢。

标签: c++

解决方案


您正在创建一个指针,但您没有创建一个实例来指向它。您应该创建一个实例

UI ui;
ui.setup(0.0f);

或者用指针来做(虽然我不明白为什么)

UI* ui = new UI;
ui->setup(0.0f);

这样指针实际上指向了一些合理的东西。

UI* ui;只是为指向对象的指针保留内存,UI但没有为该UI对象保留内存。因此,设置失败,因为您尝试写入未分配的内存。


推荐阅读