2012-07-17 2 views
0

에 아주 간단한 질문 아직 혼란 상속을 변경합니다사용 지침은 공공

왜 사용하는 지시어는 상속을 변경 않습니다를!? 이것은 Comeau로 컴파일됩니다.

나는 using 지시어 (decleration?)를 사용하여 변수를 공개하지만 그 이유는 무엇입니까? 내가 원하는 것은 항상 쓸만한 좋은 방법이다. this->x B ...?

class A{ 
protected: 
    int x; 
public: 
}; 

class B: public A { 
public: 
    using A::x; 
}; 

int main(){ 
    B b; 
    b.x = 2; 
} 

감사합니다!

+0

정확히 무엇이 문제입니까? – SingerOfTheFall

+1

당신은 B --- 안에'this-> x'를 써야 할 필요가 없습니다. ... –

+0

OK, jeah 저는 실제로 템플릿을 가지고 있으며, 단순히 "오른쪽"섹션 (개인, 보호, public) (상속을 변경하지 않음) 섹션을 사용하여 declation ... thats the way ... – Gabriel

답변

2

클래스 디자이너는 변수를 public으로 설정할 수 있습니다.

원하지 않는 경우 using을 공개 섹션에 넣지 마십시오.

그리고 기본 클래스가 템플릿이 아닌 한 파생 클래스에서 this->x을 사용할 필요가 없습니다.

2

어리석은 지시어를 사용하면 상속이 변경되는 이유는 무엇입니까?

using 선언 (지침 아님) public을 선언했기 때문에. 일반적으로 액세스하기를 원하지 않는 경우 protected 또는 private으로 지정하십시오.

내가 원하는 것은 항상 쓸 방법이 아닙니다. this->x 안에 B ...?

일반적으로, 예를 들어, 당신은 필요하지 않습니다. AB이 모두 템플릿이고 기본 클래스가 종속적 인 경우 (파생 클래스의 템플릿 매개 변수에 따라 다름)에만 필요합니다. 이 경우 개인 using을 사용하면 this->x을 쓰지 않아도됩니다.