SIP v4.19.23 adds dependency on assignment operator

Phil Thompson phil at riverbankcomputing.com
Fri Jun 26 15:28:43 BST 2020


On 26/06/2020 15:10, Jochen Sprickerhof wrote:
> Hi Phil,
> 
> thanks for the fast reply!
> 
> * Phil Thompson <phil at riverbankcomputing.com> [2020-06-26 14:46]:
>> So you need to tell SIP this by defining a private assignment 
>> operator.
> 
> I tried that but SIP still generates code that is refused by gcc:
> 
> orocos_kdl/src/chainiksolvervel_pinv_givens.hpp:
> 
> +     private:
> +         ChainIkSolverVel_pinv_givens& operator=(const
> ChainIkSolverVel_pinv_givens& other);
> 
> python_orocos_kdl/PyKDL/sip/sipPyKDLpart1.cpp:
> 
> extern "C" {static void
> dealloc_ChainIkSolverVel_pinv_givens(sipSimpleWrapper *);}
> static void dealloc_ChainIkSolverVel_pinv_givens(sipSimpleWrapper 
> *sipSelf)
> {
>     if (sipIsDerivedClass(sipSelf))
>         reinterpret_cast<sipChainIkSolverVel_pinv_givens
> *>(sipGetAddress(sipSelf))->sipPySelf = SIP_NULLPTR;
> 
>     if (sipIsOwnedByPython(sipSelf))
>     {
>         release_ChainIkSolverVel_pinv_givens(sipGetAddress(sipSelf),
> sipIsDerivedClass(sipSelf));
>     }
> }
> 
> python_orocos_kdl/PyKDL/sip/sipPyKDLpart1.cpp: In function ‘void
> assign_ChainIkSolverVel_pinv_givens(void*, Py_ssize_t, void*)’:
> python_orocos_kdl/PyKDL/sip/sipPyKDLpart1.cpp:1047:137: error:
> ‘KDL::ChainIkSolverVel_pinv_givens&
> KDL::ChainIkSolverVel_pinv_givens::operator=(const
> KDL::ChainIkSolverVel_pinv_givens&)’ is private within this context
>  1047 |     if (sipIsDerivedClass(sipSelf))
> 
> Do you have an idea why?

You'll have to send me the relevant .sip files.

> Also, the assignment operator is already removed by the compiler,
> having to manually define it private sounds superfluous.

SIP isn't a full C++ parser - it doesn't know that the compiler will 
delete the operator.

Phil


More information about the PyQt mailing list