[PyQt] SIP template-based class with argument having default constructor as default value
Shaheed Haque
srhaque at theiet.org
Sun Jun 18 14:59:00 BST 2017
On 15 June 2017 at 23:38, Phil Thompson <phil at riverbankcomputing.com> wrote:
> On 13 Jun 2017, at 3:16 pm, Denis Rouzaud <denis.rouzaud at gmail.com> wrote:
>>
>>
>> Hi all,
>>
>> Title says it all ;)
>>
>> I think there is an issue on how SIP handles the default value argument for template-based classes.
>> SIP don't replaces the T var by the implemented base class constructor. See below.
>>
>> Let's say I have
>>
>> template <typename T>
>> class Base
>> {
>> pubic:
>> Base( const T &epoch = T()) : mEpoch( epoch ){}
>> private:
>> T mEpoch;
>> }
>>
>> typedef Base< QDate > MyDate;
>> typedef Base< QDateTime > MyDateTime;
>>
>>
>> Here is the SIP code generated:
>>
>> static void *init_type_MyDate(sipSimpleWrapper *, PyObject *sipArgs, PyObject *sipKwds, PyObject **sipUnused, PyObject **, PyObject **sipParseErr)
>> {
>> MyDate *sipCpp = 0;
>> {
>> const QDate& a0def = T();
>> const QDate* a0 = &a0def;
>> int a0State = 0;
>> ......
>>
>>
>> I get an error:
>> use of undeclared identifier 'T'
>> in const QDate& a0def = T();
>>
>>
>> Does someone confirm?
>> Is there a workaround?
>
> Tonight's snapshot should handle this use case - but you may find others that will require more work.
Phil,
Here, I think, is one of those other cases:
template <T>
class KSharedPixmapCacheMixin: T, KLocalImageCacheImplementation
{
...
};
The problem is that SIP does not like the use of T as a base class:
ERROR: sip: ::T has not been defined while processing
KGuiAddons/KGuiAddonsmod.sip
Thanks, Shaheed
>
> Phil
>
> _______________________________________________
> PyQt mailing list PyQt at riverbankcomputing.com
> https://www.riverbankcomputing.com/mailman/listinfo/pyqt
More information about the PyQt
mailing list