C ++ nombre de tipo de variable miembro
Pregunta
¿Es posible obtener nombre de tipo de una variable miembro? Por ejemplo:
struct C { int value ; };
typedef typeof(C::value) type; // something like that?
Gracias
Otros consejos
Sólo si estás bien con el tipo de procesamiento en una función
struct C { int value ; };
template<typename T, typename C>
void process(T C::*) {
/* T is int */
}
int main() {
process(&C::value);
}
No va a trabajar con los miembros de datos de referencia. C ++ 0x permitirá decltype(C::value)
para hacer eso más fácilmente. No sólo eso, sino que permite decltype(C::value + 5)
y cualquier otra materia expresión de fantasía dentro de la decltype
. Gcc4.5 ya es compatible con ella.
Puede que no sea exactamente lo que está buscando, pero posiblemente una solución mejor en el largo plazo:
struct C {
typedef int type;
type value;
};
// now we can access the type of C::value as C::type
typedef C::type type;
Esto no es exactamente lo que quiere, pero sí permite que escondamos el tipo de aplicación C::value
para que más tarde puede cambiar, que es lo que sospecho que está buscando.
Depende de lo que tiene que hacer con él, pero que podría hacer algo como:
#include <iostream>
using namespace std;
struct C
{
typedef int VType;
VType value;
};
int main()
{
C::VType a = 3;
cout << a << endl;
}