2012-11-07 4 views
2

클래스에 대한 부작용을 명시 적으로 최소화하기 위해 클래스에만 멤버를 액세스하도록 제한하고 싶습니다.클래스 외부의 액세스 금지

예를 들어, 컴파일러는 다음과 같은 경우 오류를 제공해야합니다. 전역 네임 스페이스의 모든 것이 사용됩니다. C++에서 이것이 가능하지 않다고 생각하기 때문에, 컴파일 타임에 그러한 검사를하는 컴파일러 확장이 있습니까?

편집 :

가 최적의 내가 사용할 수 있도록 내가 좋아하는 모든 전역 네임 스페이스 객체, 함수 등을 가능하게 할 것이다.

+2

"클래스 외부"를 정의하십시오. 또한 클래스가'int','='및'if'와 같은 것을 사용하지 않기를 원합니까? –

+0

이것은 구현중인 클래스입니까, 아니면 다른 사람의 클래스입니까? –

+1

클래스를 자신의 로컬 변수 만 변경하는 것은 무리가 아닙니다. 클래스가 다른 변수에 액세스하는 것을 방지하는 것은 덜 합리적이며, 클래스가 외부 함수를 사용하지 못하도록하는 것은별로 합리적이지 않습니다. 그러나 #includes 또는 externs를 확인하는 전 처리기 단계를 빌드 할 수 있습니다. 그러한 것이 존재한다면 (필요한 것 이상으로) 불평 할 수 있습니다. – JCooper

답변

3

어쩌면 내가 놓친 것이지만 다른 헤더 파일을 포함하지 않으면 클래스 이외의 다른 것에 액세스 할 수 없습니다.

+1

사실이 아닙니다. 프로그래머는 항상 _extern_을 선언 할 수 있으며 다시 잃어 버릴 수 있습니다. – abergmeier

+0

이것이 표준 방법이라고 생각합니다. – Simone

+0

@LCID 불 : 이해가 안됩니다. 이 extern이 정의 된 헤더를 포함하지 않으면 액세스 할 수 없습니다. –

0

나는 이것이 가능하다고 생각하지 않습니다. 변수가 있고 클래스가 액세스하지 못하도록하고 싶다면. 그것을 비 전역 변수로 만들고 관련 클래스에만 전달하십시오.

+1

코딩에 관한 것이 아니라 코드 협약에 관한 것입니다. – abergmeier

관련 문제