简体   繁体   English

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

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

I've declared a private variable MainWindow mainWindow; 我已经声明了一个私有变量MainWindow mainWindow; in controller.h but I cannot access it from controller.cpp controller.h中,但我无法从controller.cpp访问它

controller.h 或者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 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);
}

Why? 为什么?

Because MainWindow* SetupMainWindow() is a global/standalone function, not a member of your Controller class. 因为MainWindow* SetupMainWindow()是全局/独立函数,所以不是Controller类的成员。 You must declare the member function as MainWindow* Controller::SetupMainWindow() in controller.cpp . 您必须在controller.cpp中将成员函数声明为MainWindow* Controller::SetupMainWindow()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM