如何从父类访问变量

时间:2013-11-23 14:27:39

标签: c++ class variables parent

如何从父类访问变量?我认为下面的代码会这样做,但是当我尝试在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;
}

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

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

答案 2 :(得分:0)

类控制器对于什么dara成员类TestApp没有任何了解。它只知道在其他地方定义了类TestApp。

相关问题