Я создаю интерфейсный файл для моей библиотеки с помощью метода передачи указателя на функцию.Существует 2 подхода:
A: определен как функция-член класса шаблона
B: определен как глобальный
// A:
template<typename T>
using fcnPtr1 = void (T::*)(const int&);
// B:
typedef void(*fcnPtr2)(const int&);
class TestInterface
{
public:
// A: This cause error 'fcnPtr1' is not a type
virtual void setCallback(fcnPtr1 callback) = 0;
// B: This is OK
virtual void setCallback(fcnPtr2 callback) = 0;
};
На данный момент подход A даетмне ошибка "fcnPtr1" не является типом, но подход B в порядке.
Мне нужно использовать подход A, потому что я не хочу, чтобы мой клиент определял функцию обратного вызова в глобальном масштабе.Любой совет?