В настоящее время я работаю над классом делегата для использования в нескольких моих программах. Мой код для свободных функций работает, но я получаю ошибку компилятора в коде, который связывает функции-члены. Содержимое ошибки компилятора:Ошибка компилятора "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...);
}
//...
};
Можно ли указать источник ошибки компилятора? В интересах решения таких проблем в будущем, что подразумевается под «неквалифицированным-id»?
«неквалифицированные-идентификатор» означает что-то вроде «какой-то имя», то есть буквы, без специальных символов, как фигурные скобки, а скорее имя переменной, имя типа, функция имя и т. д. – leemes