Datentyp von Struktur...?



  • Ja du rufst die Struktur ab, die am Index 0 steht. Aber um auf die elemente der Struktur zuzugreifen musst du logischer Weiße noch angeben welche Member also

    std::cout<<p_Struktur_1[0].x<<std::endl;
    std::cout<<p_Struktur_1[0].y<<std::endl;
    std::cout<<p_Struktur_1[0].z<<std::endl;
    


  • Sry wenn ich so viel Frage...
    Also kann man dann in diesem Falle nur die Instanzen aus der 1. Struktur mit push_back anlegen...?



  • wie-wo-was schrieb:

    Sry wenn ich so viel Frage...
    Also kann man dann in diesem Falle nur die Instanzen aus der 1. Struktur mit push_back anlegen...?

    Inwiefern "anlegen"?Du kannst soviele Instanzen der ersten Struktur "rein_push_backen()", soviel dein RAM hergibt 😛



  • wie-wo-was schrieb:

    Sry wenn ich so viel Frage...
    Also kann man dann in diesem Falle nur die Instanzen aus der 1. Struktur mit push_back anlegen...?

    Schau dir am besten einmal den Link, den ich gepostet habe in Ruhe an. (also unter std::vector) und dann google mal nach Beispielen, wenn du es immer noch nicht verstehst. Es gibt viele gute Tutorials, wo der Einstieg recht gut erklärt ist.



  • Nein, ich meinte eigentlich, dass man nur die Instanzen anlegen kann, sprich:

    #include <iostream>
    #include <vector>
    using namespace std;
    
    struct struk_1
    {
    	int x;
    	int y;
    	int z;
    };
    
    struct struk_2
    {
    	vector<struk_1> p_struk_1;
    };
    
    int main(void)
    {
    	struk_1 s1;
    	struk_2 s2;
    
    	s1.x = 250;
    	s1.y = 500;
    	s2.z = 750;
    
    	cout<< s2.p_struk_1.push_back( s1.x ) <<endl;
    
    	cin.get();
    }
    

    und nicht:

    #include <iostream>
    #include <vector>
    using namespace std;
    
    struct struk_1
    {
    	int x;
    	int y;
    	int z;
    };
    
    struct struk_2
    {
    	vector<struk_1> p_struk_1;
    };
    
    int main(void)
    {
    	struk_1 s1;
    	struk_2 s2;
    
    	int z = 250;
    	int y = 500;
    	int x = 750;
    
    	cout<< s2.p_struk_1.push_back( s1.x ) <<endl;
    
    	cin.get();
    }
    


  • Ich glaube du verwechselst da vollständig was
    Das hier:

    cout<< s2.p_struk_1.push_back( s1.x ) <<endl;
    

    funktioniert nicht. Da kriegst du eine Compilerfehlermeldung. Du willst in einen Vector einen int-Wert pushen, obwohl dein Vector eine struktur erwartet, das kann nicht gut gehen, stimmts oder?;)



  • struk_1 s1;
        struk_2 s2;
    
        int z = 250;
        int y = 500;
        int x = 750;
    

    Diese 5 Variablen haben rein gar nichts miteinander zu tun.

    z,y,x sind völlig unabhängige Variablen vom Typ Integer. Dass die gleich heissen, wie etwas in einer Klasse drin, spielt überaupt keine Rolle. (Ausser du deklarierst sie innerhalb einer Memberfunktion, wo sie die Memer dann einfach überdecken,aber das ist ein anderes Thema..)



  • oO...ähh 😞



  • Tut mir ja leid, aber jetzt bin ich verwirrt oO...
    Es wäre keiner so nett, mir ein minimales Beispiel zu tippen?



  • Haben wir doch.. 🙄

    Naja.

    std::vector<int> v; // vector von int's
    
    v.push_back ( 2 ); // pushe einen integer vom wert 2 rein
    v.push_back ( 3 ); // pushe einen integer vom wert 3 rein
    

    v hat nun 2 integer drin. Der erste hat den Wert 2, der zweite den Wert 3.

    Nun kannst du aber einen vector für einen beliebigen Typen erstellen:

    class foo{};
    
    std::vector<foo> foos;
    foos.push_back ( foo () ); // pushe ein foo in den vector, was auch immer das ist..
    

    Wenn du das immernoch nicht verstehst, dann sag wenigstens, was du nicht verstehst..



  • Ah, ich habs kapiert, danke schön! ❤ :xmas1: :xmas2:


Anmelden zum Antworten