【发布时间】:2015-01-23 16:22:15
【问题描述】:
应用程序在我运行后崩溃,请帮助!
我制作一个包含 2 个值的向量的这个头文件是 X 和 Y。 Vector2D.h:
#ifndef VECTOR2D_H
#define VECTOR2D_H
class Vector2D
{
public:
Vector2D(float x , float y ):object_x(x) , object_y(y) {}
float getX() {return object_x;}
float getY() {return object_y;}
void setX(float x) {object_x = x;}
void setY(float y) {object_y = y;}
private:
float object_x;
float object_y;
};
#endif
这是我声明一个访问向量的指针的头文件 OMH.h
#include "Vector2D.h"
#include <iostream>
#ifndef OMH_H
#define OMH_H
using namespace std;
class OMH
{
public:
OMH();
~OMH(void);
void display();
Vector2D *getMouse()
{return mouse;}
private:
int x;
Vector2D *mouse;
};
#endif
OMH.cpp
OMH::OMH()
{
}
OMH::~OMH(void)
{
}
void OMH::display()
{
mouse->setX(5);
mouse->setY(1);
cout<<mouse->getX();
}
当我构建它时,它成功了
main.cpp
#include <iostream>
#include "OMH.h"
#include "Vector2D.h"
using namespace std;
int main()
{
OMH * object;
object->getMouse();
return 0;
}
当我运行它时,它会显示一个错误框,上面写着:“正在使用的对象没有被集成!” 然后它崩溃了。
【问题讨论】:
-
OMH * object;是一个未初始化的指针,它的使用是未定义的,但几乎肯定会崩溃。在这种情况下,您似乎不需要指针(但如果您认为确实需要指针,则应该使用new/free)。 -
你也永远不会给
mouse分配任何东西。 -
另外,你为什么在 C++ 中使用
OMH::~OMH(void)?OMH::~OMH()就够了。 -
使用调试器的好案例。调试器可以帮助您一次执行一条语句并查看变量的值。比要求 StackOverflow 执行代码检查要快得多。