C++ 有没有一种方法可以声明一个类,然后在c++;?
我想知道是否有一种方法可以在函数之前声明一个类,然后在函数内部初始化它,比如: 应用程序.h:C++ 有没有一种方法可以声明一个类,然后在c++;?,c++,class,initialization,C++,Class,Initialization,我想知道是否有一种方法可以在函数之前声明一个类,然后在函数内部初始化它,比如: 应用程序.h: class Application { Application(HWND hwnd); ~Application() {} }; class Application { public: void init(HWND hwnd); }; Main.cpp: #include "Application.h" #include <Windows.h> Application
class Application
{
Application(HWND hwnd);
~Application() {}
};
class Application
{
public:
void init(HWND hwnd);
};
Main.cpp:
#include "Application.h"
#include <Windows.h>
Application App;
int main()
{
App(hwnd);
return 0;
}
#include "Application.h"
#include <Windows.h>
Application App;
int main()
{
App.init(hwnd);
return 0;
}
#包括“Application.h”
#包括
应用程序;
int main()
{
App(hwnd);
返回0;
}
不能在函数中初始化全局对象,在调用程序的主函数之前,将调用该对象的构造函数。这是非常糟糕的,它涉及所谓的静态初始化失败,您希望避免它。尝试在C++中搜索单模式模式,这是你需要的。p>
Application *pApp;
int main()
{
pApp = new Application(hwnd);
//use pApp
delete pApp;
return 0;
}
使用指针是实现你想做的唯一方法。C++中的
< P>在分配对象的时候调用一个对象的构造函数,你不能像你试图调用的那样调用构造函数。您可能会考虑不定义构造函数,并使用单独的成员函数,例如“代码> init < /Cord>”来初始化应用程序对象。
应用程序.h:class Application
{
Application(HWND hwnd);
~Application() {}
};
class Application
{
public:
void init(HWND hwnd);
};
Main.cpp:
#include "Application.h"
#include <Windows.h>
Application App;
int main()
{
App(hwnd);
return 0;
}
#include "Application.h"
#include <Windows.h>
Application App;
int main()
{
App.init(hwnd);
return 0;
}
#包括“Application.h”
#包括
应用程序;
int main()
{
App.init(hwnd);
返回0;
}
您想要解决的真正问题是什么?对象是在构造过程中初始化的,在调用构造函数之前,对象是什么?您不是在声明类,而是在声明实例,是的,动态分配就是这样一种方式。现在,你为什么要问呢?我会将App
声明为指针,并在函数中动态分配它。好了,没有办法静态地完成这个任务。@WhozCraig我需要在函数之前声明它,因为我在两个函数中使用类函数。winMain()和MsgProc()。