feste Wertdefinition



  • Hallo

    gibt es eine möglichkeit

    einem Struct in einer Definition (in einer Header) feste Werte zuzuweisen??
    ich habe

    struct fVector3AMT 
    {
    	float v1;
    	float v2;
    	float v3;
    };
    

    und nun habe ich vier davon denne ich für immer feste werte zuweiesen möchte
    geht das?? im moment habe ich dafür eine extra Klasse geschrieben, damit ich das getrennt von dem Rest habe.

    Gruß mkgandalf



  • Das was du willst, kannst du mit dem Schlüsselwort static machen.
    Für die Klasse wird nur eine Variable angelegt, diese ist nicht abhängig von irgendeiner Klasseninstanz, daher musst du den Variablen auch seperat Werte zuweisen:

    #include <iostream>
    
    struct fVector3AMT 
    {
    	fVector3AMT() : v4(0.0)
    	{}
    	fVector3AMT(float v4) : v4(v4)
    	{}
    	static float v1; 
    	static float v2; 
    	static float v3;
    	float v4; 
    };
    
    float fVector3AMT::v1 = 0.0;
    float fVector3AMT::v2 = 0.0;
    float fVector3AMT::v3 = 0.0;
    
    int main()
    {
    	fVector3AMT obj, obj2(5.0);
    	std::cout << obj.v1 << " " << obj.v4 << std::endl;
    	std::cout << obj2.v1 << " " << obj2.v4 << std::endl;
    }
    

    Schaue in deinem C++ Buch nach, wenn du weitere Fragen dazu hast. 🕶
    Edit: bissle was verbessert 🙂



  • Du meinst den Werten im Struct Werte geben? Mach doch einfach nen Default-Ctor, der die Variablen auf bestimmte Werte setzt. Oder meinst auf konstante Werte? Dann würde sowas gehen:

    struct foo {
       static const int bar = 0;
    };
    

    Zumindest beim VS.NET geht das.



  • Danke
    @interpreter deine Idee funktioniert unter Visual Studio 6 leider nicht

    gruß mkgandalf



  • mkgandalf schrieb:

    Danke
    @interpreter deine Idee funktioniert unter Visual Studio 6 leider nicht

    gruß mkgandalf

    Ja. Weil ich damit schon gerechnet habe, habe ich extra die Klausel "klappt zumindest mit vs.net" dazugeschrieben.



  • Dann entweder die Initialisierung bei der Definition der static-Variablen außerhalb der Klasse vornehmen oder mal nach enum-Hack googlen.

    MfG jester


Anmelden zum Antworten