无法从 .cpp 访问 .h 中声明的私有成员

Can't access private member declared in .h from .cpp

本文关键字:声明 成员 cpp 访问      更新时间:2023-10-16

我在controller.h中声明了一个私有变量MainWindow mainWindow;但是我不能从controller.cpp

访问它

controller.h

#ifndef CONTROLLER_H
#define CONTROLLER_H
#include <QMainWindow>
#include "event_manager.h"
#include "event_wrapper.h"
#include "event_list_viewer.h"
#include "main_window.h"
class Controller
{
public:
    Controller();
    ~Controller();
    static Controller &GetInstance();
    MainWindow *SetupMainWindow();
private:
    MainWindow mainWindow;
};
#endif // CONTROLLER_H

controller.cpp

#include "controller.h"
Controller::Controller() {}
Controller::~Controller() {}
Controller& Controller::GetInstance()
{
   static Controller instance;
   return instance;
}
MainWindow* SetupMainWindow()
{
    bbque::EventManager *manager = &bbque::EventManager::GetInstance();
    bbque::EventWrapper *wrapper = manager->Deserialize(); //get wrapper via manager
    EventListViewer eventViewer;
    wrapper->setParent(&eventViewer);
    eventViewer = EventListViewer(wrapper, mainWindow); //cannot access mainWindow variable
    return new MainWindow(eventViewer);
}

为什么?

因为MainWindow* SetupMainWindow()是一个全局/独立函数,而不是您的Controller类的成员。必须在controller.cpp.

中声明成员函数为MainWindow* Controller::SetupMainWindow()