在ubuntu 12.10中的c ++和netbeans中忽略了一条指令

时间:2012-11-29 01:31:39

标签: c++ g++ sdl

  

可能重复:
  Why is there no call to the constructor?
  What’s the effect of “int a(); ” in C++?
  What’s the differences between Test t; and Test t();? if Test is a class

由于某种原因,我试图制作的游戏项目会忽略我创建对象的指令。

项目刚刚开始,我不知道为什么会这样。

我使用netbeans作为ide,g ++作为编译器,操作系统是ubuntu 12.10。

发生这种情况的代码是:

#include "Vector.h"
#include"Motor.h"
int main(int argc, char** argv)
{ 
    Motor m1(); 
    return 0;
}

当我在“Motor m1();”上设置断点时并点击调试箭头跳转到它后面的返回指令,并且没有执行对象的构造函数

Motor的代码就是这样:

#include "Motor.h"
Motor::Motor() {
    SDL_Init(SDL_INIT_EVERYTHING);
    pantalla=NULL;
    pantalla=SDL_SetVideoMode(800,600,32,SDL_SWSURFACE);

    SDL_Delay(2000);
}
Motor::~Motor() {
    SDL_Quit();
}

“SDL_Delay(2000)”用于测试目的。

为什么会这样?

1 个答案:

答案 0 :(得分:3)

Motor m1(); 

这意味着m1是一个不带参数的函数,并返回类Motor的实例。

你的意思是:

Motor m1;

这意味着默认构造一个类Motor的实例并将其称为m1