우리는 클래스 숙제의 일부로 Herb Sutter의 Exceptional C++ 서적을 읽고 있습니다. 항목 36 :Exceptional C++ Item 36
가 나는 형식 정의가 실제로 무엇을하고 있는지 이해하고 그것을 구성하는 방법을 해독에 질문이
누군가가 typefef의 논리 불구하고 산책 할 수있는 큰 도움이 될 것입니다 경우.
class B
{
public:
virtual ~B();
void operator delete (void*, size_t) throw();
void operator delete[] (void*, size_t) throw();
void f(void*, size_t) throw();
}
class D : public B
{
public:
void operator delete (void*) throw();
void operator delete[] (void*) throw();
};
typedef void (B::*PMF)(void*, size_t);
PMF p1 = &B::f;
PMF p2 = &B::operator delete;
클래스 B (PMF)에서 멤버 함수에는 포인터가 없기 때문에, 는 PMF와는 어떻게 생성됩니까 무엇인가?
typedef의 반환 형식이 무효입니까? (void * 및 size_t)는 typedef의 인수입니까?
덕분에 이미 댓글에서 설명한 바와 같이
PMB 대신 PMF를 사용 했습니까? – Borgleader
cdecl.org에 따르면 : PMF를 B 클래스의 멤버에 대한 포인터로 선언 function (void, size_t) return void C : '클래스 멤버의 포인터'에서 지원되지 않음 – Borgleader
코드에 오류가 있습니다 클래스의 끝에';'B :: F'는'B :: f'이어야합니다). – Snps