Как получить доступ к переменной из родительского класса? Я думал, что приведенный ниже код будет делать это, но когда я попытаюсь распечатать значение имени в Controller.cpp, я получаю ошибку:
Членский доступ к неполному типу "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;
}
Это не имеет ничего общего с родительскими классами. TestApp
определен в TestApp.cpp, он не отображается в коде в Controller.cpp. Вам нужно переместить определение TestApp
в файл заголовка (называемый TestApp.h say), а затем #include "TestApp.h"
в Controller.cpp.
Вы должны поместить определение класса TestApp
в заголовок и включить его в TestApp.cpp
и Controller.cpp
.
Контроллер класса ничего не знает о том, что у класса участников Dara TestApp. Он знает только, что есть класс TestApp, который определен где-то в другом месте.
#include "TestApp.h
в Controller.h вместо Controller.cpp, я не осознавал, что это имеет значение!