2
내부 클래스의 크기와 함께 컴파일 시정 수를 노출해야합니다.개인 내부 클래스 크기 노출
#include <cassert>
struct A
{
//consider Private class as private for this example, just to be able to put the assert like this in main
class Private{};
enum { PrivateSize = sizeof(Private) };
};
int main()
{
//here I have warning on some compilers, signed/unsigned comparison
assert(A::PrivateSize == sizeof(A::Private));
}
내 문제가 PrivateSize
일부 컴파일러에 서명하고 다른 사람에 서명하고 서명 유형과 비교했을 때 이것에 대해 경고를받을된다는 점이다 : 그래서 나는 다음 코드를 시도 할 수 있습니다. 내가 아는 한 enum
의 기본 유형은 구현 정의이며 강제적으로 signed
또는 unsigned
이 될 수 없습니다.
A
외부에 sizeof(A::Private)
을 노출시키는 방법을 알고 있습니까? 컴파일시 일정한 시간이지만, Private
클래스를 private로 유지 하시겠습니까? 코드는 일부 오래된 컴파일러에서 사용되므로 constexpr
을 사용할 수 없습니다.
난 당신이 DieterLücking @ –
내가이를 변경할 수 있습니다 변경할 수 없습니다 생각,하지만 난 – Felics
개인 내부 클래스를 유지해야 경고하지 마십시오. – Jarod42