如何从父类访问变量?我认为下面的代码会这样做,但是当我尝试在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 )
或者Controller.h
#pragma once
class TestApp;
class Controller
{
public:
void setup(TestApp* parent);
void update();
TestApp* p;
};
Controller.cpp
#include "Controller.h"
void Controller::setup(TestApp* parent)
{
p = parent;
}
void Controller::update()
{
std::cout << p->name << std::endl;
}
答案 0 :(得分:2)
您需要将TestApp
类定义放在标题中,并将其包含在TestApp.cpp
和Controller.cpp
中。
答案 1 :(得分:2)
这与父类无关。 TestApp
在TestApp.cpp中定义,它对Controller.cpp中的代码不可见。您需要将TestApp
的定义移动到头文件(称为TestApp.h),然后在Controller.cpp中移动#include "TestApp.h"
。
答案 2 :(得分:0)
类控制器对于什么dara成员类TestApp没有任何了解。它只知道在其他地方定义了类TestApp。