2013-12-08 1 views
-3

아주 이상한 문제가 하나 있습니다. 여기에 전체 시나리오를 설명하려고합니다. 해결책을 제안하십시오.이상한 행동 .. 약간의 해결책을 제안 해주세요

/* "test.h" */ 
class A : public B 
{ 
    public: 
     A(); 
     bool isUp; 
}; 

/* test.cpp */ 
#include "test.h" 
A::A() 
{ 
    isUp = false;    //`isUp' was not declared in this scope 
} 

내가 class 내부 .h에서 선언하고있는 경우는 의미입니다. 내가 틀렸다면 어떤 접근 방식을 따라야합니다.

편집 :

class B의 정의입니다
class B 
{ 
    public: 
    sem_t m_job_count; //added by RajaGopal 
    B(); 
    void Init(); 
    void Init(char * s,int); 

    void RegisterWorker(worker *aWorker); 
    unsigned long getIndex(); 
    void setIndex(unsigned long index); 

    char Msg[200]; 

    static void* ThreadProc(void *p); 

    ~B(); 
}; 
+1

무엇이 문제입니까? – doptimusprime

+0

dbasic .... "isUp '이이 범위에서 선언되지 않았다는 컴파일러" – user2845185

+2

클래스 B의 정의는 어디에 있습니까? – doptimusprime

답변

2

. 클래스 B를 상속 받기 때문에 컴파일러는 클래스 B의 정의를 알아야합니다. 헤더 파일이나 그 정의도 함께 포함해야합니다. B의

클래스 정의가

그렇지 않으면 A를 볼 수 있어야합니다,이 코드 here를 컴파일하고 어떤 문제에 직면하지 않았다.

+0

죄송합니다 ...하지만 나는 또한 선언했습니다. 그냥 여기에 포함시키지 마십시오. – user2845185

+0

편집을보고 도움이되는지 알려주세요. – doptimusprime

+0

그는 *에 대해 * A의 기본 생성자를 선언했습니다. – Shoe