OK, antes de darme clases sobre el uso de funciones variadic de estilo C en C++ ... todo lo demás ha resultado requerir nada más que volver a escribir el Qt MOC.funciones Qt y variadic
Lo que me gustaría saber es si puede o no tener un "espacio" en un objeto Qt que tome una cantidad arbitraria/tipo de argumentos. Lo que pasa es que realmente quiero poder generar objetos Qt que tengan ranuras de una firma arbitraria. Como el MOC es incompatible con el preprocesamiento estándar y con plantillas, no es posible hacerlo con un enfoque directo. Sólo vine otra idea:
struct funky_base : QObject
{
Q_OBJECT
funky_base(QObject * o = 0);
public slots:
virtual void the_slot(...) = 0;
};
Si esto es posible, entonces, porque se puede hacer una plantilla que es una subclase de un objeto QObject derivadas siempre y cuando no se declara cosas nuevas Qt en ella, Debería poder implementar un tipo de plantilla derivada que tome el material ...
y lo convierta en los tipos esperados apropiados.
Si es así, ¿cómo me conectaría? ¿Esto funcionaría?
connect(x, SIGNAL(someSignal(int)), y, SLOT(the_slot(...)));
Si nadie ha intentado algo tan loco y no sabe fuera de la mano, sí, lo que finalmente va a probar en mi misma ... pero estoy esperando que alguien los conocimientos ya existentes que puede tocar antes de perder posiblemente mi tiempo en eso.
Esta pregunta fue un intento de encontrar una manera de diseñar una clase base 'catch-all' para un objeto de plantilla que podría traducir las señales de Qt en señales estáticas como impulso :: signals2 o funciones básicas justas. Pensé que si podía construir una ranura que tomara plantillas variadas podría usar TMP para reconstruir los parámetros de los va_args. La respuesta al problema fue exactamente eso, pero se recorta ANTES de que el mecanismo de qt llame a la ranura. La primera entrega de una serie de artículos sobre cómo hacer que todo el asunto mostró cómo resolví esta parte del problema:
http://crazyeddiecpp.blogspot.com/2011/01/quest-for-sane-signals-in-qt-step-1.html
Esa es mi lugar antiguo blog. Nuevo en mi perfil si quieres ver otro sh1t extraño.
NVM, respondí mi propia pregunta. Qt por supuesto no puede hacer esto tampoco. –
Al tener slots sin tipo está regalando una de las principales ventajas del lenguaje ... seguridad del tipo de tiempo de compilación. –
Frank, franco, franco. Qt ya lo hizo. Estoy tratando de recuperar la seguridad tipográfica. Este fue un intento fallido. Ver mi blog para la historia de éxito final (está en mi perfil). –