class Base {
protected:
union {
struct {
bool bBold : 1;
bool bFakeBold : 1;
};
int a;
};
public:
bool isBold() {
return bBold;
}
};
테스트 클래스 :protected가이 클래스의 멤버를 보호하지 않는 이유는 무엇입니까?
#include <assert.h>
#include <stdio.h>
int main()
{
Base d;
d.bBold = false;
assert(d.isBold() == false);
d.bBold = true;
assert(d.isBold() == true);
printf("good");
return 0;
}
msvc11 모두와 g ++ 오류없이 컴파일합니다.
왜?
노동 조합을 사용하지 않는 또 다른 이유가 있습니다. –
clang 3.2'error : 'bBold'는 예상대로 'Base'의 보호 된 멤버입니다. gcc 4.7.2가 불평하지 않음 ('protected'및 'private'에 대해서도) – alfC
msvc는 경고를 표시합니다. [C4201] (http://msdn.microsoft.com/en-us/library/c89bw853(v=vs) .71) .aspx) – spiritwolfform