有没有办法声明一个类然后在c ++函数中初始化它?

时间:2014-02-21 21:41:19

标签: c++ class initialization

我想知道是否有办法在函数之前声明一个类,然后在函数内部初始化它,如下所示:

Application.h:

class Application
{
  Application(HWND hwnd);
  ~Application() {}
};

Main.cpp的:

#include "Application.h"
#include <Windows.h>

Application App;

int main()
{
  App(hwnd);
  return 0;
}

3 个答案:

答案 0 :(得分:1)

Application *pApp;

int main()
{
  pApp = new Application(hwnd);

  //use pApp

  delete pApp;
  return 0;
}

使用指针几乎是做你想做的事情的唯一方法。

答案 1 :(得分:0)

您无法在函数内初始化全局对象,在调用程序的main函数之前的某个时间将调用该对象的构造函数。这是非常糟糕的,它涉及静态初始化惨败的事情,你想避免它。尝试在C ++中搜索单例模式实现,这可能是你需要的。

答案 2 :(得分:0)

在C ++中,对象的构造函数在分配了它的存储时被调用,你不能像以前那样调用构造函数。

您可能考虑不定义构造函数,并使用单独的成员函数(例如init)来初始化App对象。

Application.h:

class Application
{
public:
    void init(HWND hwnd);
};

Main.cpp的:

#include "Application.h"
#include <Windows.h>

Application App;

int main()
{
    App.init(hwnd);
    return 0;
}