如何共享成员来继承类?



我想在不传递任何参数的情况下从应用程序对象到子对象共享值初始化。例如,我需要传递mHInstance到窗口,按钮,标签类。如何做到这一点?

应用程序→工具→窗口。应用程序→工具→按钮。应用程序→工具→标签。

#include <Windows.h>
class Application
{
protected:
HINSTANCE mHInstance;
public:
Application(HINSTANCE);
};
class Widget: public Application
{
protected:
HWND mHWnd;

public:
void show();
};
class Window: public Widget
{
public:
Window();
};

实现
Application::Application(HINSTANCE hInstance)
{
mHInstance = hInstance;
};
// Window implementations
Window::Window()
{
WNDCLASSEX wc = {0};
// Access application member that already initialize
wc.hInstance = mHInstance;
RegisterClassExW(&wc);
};

主要

#include <Windows.h>
#include "../headers/gui.h"
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
PWSTR lpCmdLine, int nCmdShow) {
Application app(hInstance);
Window* wnd = new Window;
wnd->show();
return app.exec();
}

您可以简单地更改下面的主样式

#include <Windows.h>
#include "../headers/gui.h"
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
PWSTR lpCmdLine, int nCmdShow) {
Application* app = new Window(hInstance);
Window* wnd = static_cast<Window*>(app);
wnd->show();
return app->exec();
}

对于继承构造函数,必须像下面这样更改类

#include <Windows.h>
class Application
{
protected:
HINSTANCE mHInstance;
public:
Application(HINSTANCE);
};
class Widget: public Application
{
protected:
HWND mHWnd;

public:
using Application::Application;
void show();
};
class Window: public Widget
{
public:
using Widget::Widget;
Window();
};

注意:确保你的编译器至少支持c++ 11

最新更新