Hola
Me he topado con algo que no había visto antes.. es lo siguiente;
auto director = Director::getInstance();
auto glview = director->getOpenGLView();
director no es puntero, porque entonces utiliza el operador -> ?
Gracias
Saludos
Corrijanne si estoy mal por favor, me parece que la palabra auto lo que hace es autodetectar el tipo devuelto, en este caso Director::getIntance() esta devolviendo un puntero de algún tipo... Y auto se transforma en ese puntero devuelto..
Sera asi?
Por qué dices que no es un puntero? Normalmente la función miembro <getInstance()> suele ser una función de las clases singleton (clases que solo pueden tener una instancia) y estas clases suelen tener un puntero a un objeto de esa clase.
class SingletonExample{
private:
static SingletonExample* instance = NULL;
SingletonExample(){}
public:
static SingletonExample getInstance(){
if (instance == NULL)
instance = new SingletonExample;
return *instance;
}
}
Te dejo el enlace de donde he sacado este fragmento de código: https://stackoverflow.com/questions/12707542/what-exactly-does-getinstance-do-in-a-singleton
Y como bien acabas de decir. La palabra reservada <auto> crea la variable del mismo tipo que le estás asignando.
Decía que no era puntero porque no lleva el asterisco
Tiene algo que ver la palabra auto?
Al usar la palabra <auto> todo depende del valor de retorno de <getInstance()>. Si esa función devuelve un puntero o una referencia entonces <auto> se comportará como si estuviesemos declarando un puntero de ese tipo.
Si, justamente así lo entendí luego.. Y lo acabas de confirmar.
Y gracias por el dato del patrón singleton, debo echarle una mirada..
Saludos
El operador flecha es lo mismo que el operador desreferenciador y el operador punto.
director->getOpenGLView()
(*director).getOpenGLView()
Se utiliza la flecha para escribir menos y hacer el codigo más fácil de leer. Pero son lo mismo.
Recuerda tambien que los operadores se pueden sobrecargar para que hagan cosas distintas.
Como ya te han dicho, auto detecta el tipo de dato.
Si, lo tenia claro, mi duda estaba con el tipo auto..
Gracias.. saludos!