2012-07-26 3 views
8
#include<QMetaType> 

    typedef QList<int> IntList; 

    qRegisterMetaType<IntList>("IntList"); 


error C2909: 'qRegisterMetaType': explicit instantiation of function template requires return type 

C2909 dice que necesito para definirqRegisterMetaType uso

template int qRegisterMetaType<IntList>("IntList"); 

Si defino como he mencionado anteriormente entonces consigo el siguiente error

error C2059: syntax error : 'string' 
warning C4667: 'int qRegisterMetaType(void)' : no function template defined that matches forced instantiation 

¿por qué recibo este error?

+0

Estoy declarando estos tipos en el archivo de encabezado. Cuando declaro lo mismo dentro de una función, diga main(). No obtengo este error de compilación. – Srikan

Respuesta

8

"qRegisterMetaType" es una función. Debe aparecer en un bloque de código.

+0

perfecto ... trabajado :-) – NDestiny

0
int metatype_id = qRegisterMetaType<IntList>("IntList"); 
1

es necesario agregar Q_DECLARE_METATYPE(IntList) antes de poder registrarlo.