如何从父类访问变量

How to access a variable from the parent class

本文关键字:访问 变量 父类      更新时间:2023-10-16

如何从父类访问变量?我原以为下面的代码可以做到这一点,但当我试图在Controller.cpp中打印出name的值时,我得到了错误:

成员访问不完整类型的"TestApp"

TestApp.cpp

#include "cinder/app/AppNative.h"
#include "Controller.h"
using namespace ci;
using namespace ci::app;
using namespace std;
class TestApp : public AppNative
{
  public:
    void setup();
    void update();
    string name = "Parent";
    Controller controller;
};
void TestApp::setup()
{
    controller.setup(this);
}
void TestApp::update()
{
    controller.update();
}

CINDER_APP_NATIVE( TestApp, RendererGl )

控制器.h

#pragma once
class TestApp;
class Controller
{
    public:
        void setup(TestApp* parent);
        void update();
        TestApp* p;
};

控制器.cpp

#include "Controller.h"
void Controller::setup(TestApp* parent)
{
    p = parent;
}
void Controller::update()
{
    std::cout << p->name << std::endl;
}

这与父类无关。TestApp是在TestApp.cpp中定义的,它对Controller.cpp中的代码不可见。您需要将TestApp的定义移动到一个头文件(称为TestApp.h),然后在Controller.cpp.

中移动#include "TestApp.h"

您需要将TestApp类定义放在标头中,并将其包含在TestApp.cppController.cpp中。

类控制器对dara成员类TestApp拥有什么一无所知。它只知道有一个类TestApp是在其他地方定义的。