Test Foro de elhacker.net SMF 2.1

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 (cpp) [Seleccionar]

float CurrentScale = OurVisibleComponent->GetComponentScale().X;


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 (cpp) [Seleccionar]

// uso una struct para que los miembros sean publicos, pero tambien sirve usando clases
struct MyStruct{
    double a;
    double b;
};

class MyClass{
    MyStruct private_struct;

    public:
        MyStruct getStruct()const{
            return this->private_struct;
        }
};

int main(){
    MyClass *p_class = new MyClass;
    p_class->private_struct.a = 10;
    // ...
    cout << p_class->getStruct().a << endl; // salida: 10
}


Si por ejemplo la <struct> tuviera una función que fuese <getA()> también puedes usar eso y hacer:
Código (cpp) [Seleccionar]

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.