Как получить доступ к переменной из родительского класса

0

Как получить доступ к переменной из родительского класса? Я думал, что приведенный ниже код будет делать это, но когда я попытаюсь распечатать значение имени в 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;
}
Теги:
class
variables
parent

3 ответа

2
Лучший ответ

Это не имеет ничего общего с родительскими классами. TestApp определен в TestApp.cpp, он не отображается в коде в Controller.cpp. Вам нужно переместить определение TestApp в файл заголовка (называемый TestApp.h say), а затем #include "TestApp.h" в Controller.cpp.

  • 0
    Большое спасибо, думаю, я понял это
  • 0
    В моем тестировании я добавил #include "TestApp.h в Controller.h вместо Controller.cpp, я не осознавал, что это имеет значение!
2

Вы должны поместить определение класса TestApp в заголовок и включить его в TestApp.cpp и Controller.cpp.

0

Контроллер класса ничего не знает о том, что у класса участников Dara TestApp. Он знает только, что есть класс TestApp, который определен где-то в другом месте.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню