基本分割错误

时间:2018-06-28 14:08:08

标签: 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);

我正在努力理解为什么这会导致细分错误。

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

1 个答案:

答案 0 :(得分:4)

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

UI ui;
ui.setup(0.0f);

或使用指针执行此操作(尽管我不知道为什么)

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

使得指针实际上指向明智的东西。

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