회원 변수가 enabled_m
인데 그 값은 변수의 수에 따라 다릅니다. 이러한 불변이 클래스에 의해 유지되어야하기 때문에, 나는 그것이 private
할 것을 권장합니다 작동하지만 정말 내 의도는enabled_m
을 수정 에 클래스를 통해 갈 foo_t
의 사용자를 필요로하는 것입니다const 연산자에 대해서만 공용 멤버 변수 public을 지정할 수 있습니까?
class foo_t
{
public:
void set_this(...); // may affect enabled_m
void set_that(...); // may affect enabled_m
void set_the_other_thing(...); // may affect enabled_m
bool is_enabled() const { return enabled_m; }
private:
bool enabled_m;
};
합니다. 모두를 필요로하지 않고
bool my_enabled = foo.enabled_m; // OK
foo.enabled_m = my_enabled; // Error: enabled_m is private
가 비 const
작업 const
운영 및 private
에 대한 enabled_m
public
을 만들 수있는 방법이 있나요 : 사용자가 원하는 경우, 즉 허용 작동해야
enabled_m
을 읽을 단지
하기 사용자가 접근 자 루틴을 수행합니까?
게터 기능을 사용하는 것이 잘못된 이유는 무엇입니까? 만약 당신의 관심이 효율적이라면,'const bool '을 반환 한'inline' 함수는 아마도 직접 멤버 액세스와 같은 것으로 컴파일 될 것입니다. – dlf
"진짜"bool을 가리키는 프록시 객체를 만들 수 있습니다.하지만 그만한 가치가 있습니까? 게터가 가장 인기 있고 깨끗한 솔루션입니다. –
@ dlf의 우려 사항 중, 인터페이스 이중성은 사용자가 그렇게해도 혼란스럽게 만들 것이라고 생각합니다. – Borgleader