현재 일부 프로그램에서 사용할 수있는 대리자 클래스를 작성 중입니다. 느슨한 함수에 대한 내 코드가 작동하지만 멤버 함수를 바인딩하는 코드에서 컴파일러 오류가 발생합니다. 컴파일러 오류 내용은 다음과 같습니다.포인터를 통해 클래스 멤버에 액세스 할 때 "unqualified-id"컴파일러 오류가 발생했습니다.
error: expected unqualified-id before '(' token.
나는 그럴만한 이유가 없습니다. 멋지게 컴파일하는 부분을 제외하고 내 코드는 다음과 같습니다.
template <typename T> class Delegate;
template <typename R, typename... Args>
class Delegate<R(Args)>
{
typedef void* InstancePtr;
//...
template <typename C, R (C::*classFunction)(Args...)>
static inline R MakeStubFunction(InstancePtr instance, Args... args)
{
// vvv error on this line vvv
return (static_cast<C*>(instance)->(*classFunction))(args...);
}
//...
};
컴파일러 오류의 원인을 누구든지 지적 할 수 있습니까? 미래에 그러한 문제를 해결할 수 있다는면에서 "무조건적인 (unqualified-id)"은 무엇을 의미합니까?
"비정규 - ID가" "어떤 이름", 즉 문자 같은 의미를 괄호 같은 특수 문자가 아니라 변수 이름, 유형 이름, 기능 이름 등. – leemes