Que significa esta sintaxis?

Iniciado por digimikeh, 11 Marzo 2019, 03:20 AM

0 Miembros y 1 Visitante están viendo este tema.

digimikeh


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.
Dungeons & dragons;
dragons.Attack();

srWhiteSkull

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

K-YreX

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

cout << "Todos tenemos un defecto, un error en nuestro código" << endl;

digimikeh

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.
Dungeons & dragons;
dragons.Attack();