2013-11-23 4 views
0

부모 클래스에서 변수에 액세스하려면 어떻게해야합니까? 나는 아래의 코드는이 작업을 수행 할 것이라고 생각하지만 Controller.cpp에서 이름의 값을 출력하려고 할 때 오류 얻을 :부모 클래스에서 변수에 액세스하는 방법

Member access into incomplete type '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; 
}; 

Controller.cpp

#include "Controller.h" 

void Controller::setup(TestApp* parent) 
{ 
    p = parent; 
} 

void Controller::update() 
{ 
    std::cout << p->name << std::endl; 
} 

답변

2

이것은 부모 클래스와 아무 관련이 없습니다. TestApp은 TestApp.cpp에 정의되어 있으며 Controller.cpp의 코드에는 표시되지 않습니다. TestApp의 정의를 헤더 파일 (TestApp.h 말)로 이동 한 다음 Controller.cpp에서 #include "TestApp.h"으로 이동해야합니다.

+0

큰 감사, 내가 생각한 것 같아 – davivid

+0

내 테스트에서 나는 Controller.cpp 대신 Controller.h에'#include "TestApp.h'를 추가했다. – davivid

2

당신은 헤더에 TestApp 클래스 정의를 넣을 필요가 있고, 등 그 TestApp.cppController.cpp인치

0

클래스 컨트롤러는 TestAce 클래스의 dara 멤버에 대해 아무 것도 모릅니다. TestApp 클래스가 다른 곳에 정의되어 있다는 것을 알고 있습니다.

관련 문제