По какому-тому причиню пытается передать указатель на эту функцию к varadic функции выдает следующую ошибку:C++ Функции Pointer вопрос
1>c:\... : error C2664: 'PyArg_ParseTuple' : cannot convert parameter 3 from 'int (__cdecl *)(PyObject *,void *)' to '...'
1> Context does not allow for disambiguation of overloaded function
PyArg_ParseTuple(args, "O&O&:CreateWindow",
&Arg_Size2U<1>, &size,
&Arg_String<2>, &title);
я не уверен, что эта проблема не является, так как функция шаблона не имеет над нагрузками, и шаблоны пареметров определены явно, поэтому нет вопросов о том, какую функцию передать указатель для ...
Есть ли какой-то путь вокруг этого, который не требует создания множества версий для каждой функции преобразования аргументов, но все еще может содержать номер аргумента в исключении, если есть ошибка? (Еще лучше передать номер аргумента в качестве пареметра, поэтому в моей DLL нет нескольких копий функции.)
EDIT: Это также приводит к ошибкам компиляции. Невозможно создать указатель на функцию шаблона или мне нужно сделать это от обычных функций?
int (*sizeConv)(PyObject *,void *) = Arg_MakeSize2U<1>;
1>c:\... : error C2440: 'initializing' : cannot convert from 'int (__cdecl *)(PyObject *,void *)' to 'int (__cdecl *)(PyObject *,void *)'
1> None of the functions with this name in scope match the target type
функция объявлена как:
template<int ARG> int Arg_MakeSize2U(PyObject *obj, void *out)
EDIT2: добавив адрес оператора дал еще одну ошибку diffrent ...
int (*sizeConv)(PyObject *,void *) = &Arg_MakeSize2U<1>;
1>c:\... : error C2440: 'initializing' : cannot convert from 'overloaded-function' to 'int (__cdecl *)(PyObject *,void *)'
1> None of the functions with this name in scope match the target type
Какое определение Arg_Size2U? –
Поскольку это похоже на Python/Swig, вы должны предоставить больше контекста. –
Актуален, хотя я столкнулся с ним с помощью python C-APi, дальнейшие тесты показывают, что это происходит с параметрами функции varaidc и функциями шаблона в целом. Также просто попытка создания указателя функции создает ошибку, хотя и отличается от ... –