Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: digimikeh en 11 Marzo 2019, 03:20 am



Título: Que significa esta sintaxis?
Publicado por: digimikeh en 11 Marzo 2019, 03:20 am

Muy buenas..

Estoy siguiendo unos tutoriales de Unreal Engine y me tope con algo que no habia visto:

Código
  1. float CurrentScale = OurVisibleComponent->GetComponentScale().X;
  2.  

Mi duda está precisamente en la sintaxis de GetComponentScale().X;

Es primera vez que veo esa terminación  ().X;

Cual sería el prototipo de esa clase de funcion ?

Gracias de antemano.


Título: Re: Que significa esta sintaxis?
Publicado por: srWhiteSkull en 11 Marzo 2019, 05:29 am
Te devuelve una estructura, FVector. Esto es algo normal para quien está acostumbrado a la programación en C/C++.

https://api.unrealengine.com/INT/API/Runtime/Core/Math/FVector/index.html


Título: Re: Que significa esta sintaxis?
Publicado por: K-YreX en 11 Marzo 2019, 10:14 am
Te pongo otro caso de ejemplo para que lo veas en otra situación, pero la respuesta de srWhiteSkull es correcta tambien:
Código
  1. // uso una struct para que los miembros sean publicos, pero tambien sirve usando clases
  2. struct MyStruct{
  3.    double a;
  4.    double b;
  5. };
  6.  
  7. class MyClass{
  8.    MyStruct private_struct;
  9.  
  10.    public:
  11.        MyStruct getStruct()const{
  12.            return this->private_struct;
  13.        }
  14. };
  15.  
  16. int main(){
  17.    MyClass *p_class = new MyClass;
  18.    p_class->private_struct.a = 10;
  19.    // ...
  20.    cout << p_class->getStruct().a << endl; // salida: 10
  21. }

Si por ejemplo la <struct> tuviera una función que fuese <getA()> también puedes usar eso y hacer:
Código
  1. p_class->getStruct().getA();

Como ves sirve para "concatenar". Puedes ir analizando de izquierda a derecha cada paso. Tienes un puntero a <MyClass> que al llamar a <getStruct()> devolvería la <private_struct> que tiene la clase como miembro. Pero a esa <struct> le aplicas el <.a> para que devuelva sólo el valor a de toda la <struct>.
Esto también te permite concatenar más de dos funciones o miembros. Si trabajas con POO te encontrarás esto en códigos que usan varias clases y estas están relacionadas. Suerte :-X


Título: Re: Que significa esta sintaxis?
Publicado por: digimikeh en 11 Marzo 2019, 16:28 pm
Muchas gracias ambos, me ha quedado claro... 

Antes le tenia terror a C++, pero con vosotros he aprendido bastante, y creo que ese miedo que le tenia realmente no tenia sentido, se programar en C#, pero creo que quedare definitivamente con C++, no me importa estar escribiendo mas, se pasa muy bien.

Gracias nuevamente.