Variable in klasse benutzen



  • Hi,

    Ich schreibe mir gerade eine klasse für openAl. leider scheitere ich schon in den startlöchern.
    Mein code sieht so aus:

    Engine.h:

    #include <string>
    #include <iostream>
    #include <AL/al.h>
    #include <AL/alut.h>
    #include <vector>
    
    class SoundNode
    {
    
        public:
         SoundNode();
         ~SoundNode();
         void setSourcePosition(ALfloat new_x, ALfloat new_y, ALfloat new_z);
    
         private:
    
    };
    

    Engine.cpp:

    #include <string>
    #include <iostream>
    #include <AL/al.h>
    #include <AL/alut.h>
    #include <vector>
    #include "Engine.h"
    
    SoundNode::SoundNode(void)
    {
    ALfloat ListenerPosition[3] = {0.0,0.0,0.0};
    ALfloat ListenerVelocity[3] = {0.0,0.0,0.0};
    ALfloat ListenerOrientation[6] = { 0.0, 0.0, -1.0,  0.0, 1.0, 0.0 };
    
    ALenum format;
    ALsizei size;
    ALvoid* data;
    ALsizei freq;
    ALboolean loop;
    
    }
    SoundNode::~SoundNode(void)
    {
    ;
    }
    void SoundNode::setSourcePosition(ALfloat new_x, ALfloat new_y, ALfloat new_z)
    {
        ListenerPosition[0]=new_x;
        ListenerPosition[1]=new_y;
        ListenerPosition[2]=new_z;
    
    }
    

    und zwar ist mein Problem folendes:
    Ich kann über die funktione setSourcePosition() natürlich nicht auf
    Die im konstruktor deklarierten variablen zugreifen.Ich habs auch schon
    mit static probiert, läuft auch nicht.
    Was muss ich denn machen um auf diese Variablen zuzugreifen?



  • Tu sie in die Deklaration. Z.B. unter "private:".



  • Neophyte schrieb:

    Was muss ich denn machen um auf diese Variablen zuzugreifen?

    Du solltest diese in der Klasse deklarieren und über Methoden auf sie zugreifen. Du musst aber wissen, dass Arrays nicht mit der Initialisierungsliste initialisiert werden können, wenn sie Member einer Klasse sind.



  • so schrieb:

    Tu sie in die Deklaration. Z.B. unter "private:".

    ja das hab ich mir auch gedacht.
    Aber dann kriege ich die fehlermeldungen:

    c:\soundengine\soundengine\Engine.h|18|error C2059: Syntaxfehler: '{'|
    c:\soundengine\soundengine\Engine.h|18|error C2334: Unerwartete(s) Token vor '{'; sichtbarer Funktionstext wird Übersprungen|
    c:\soundengine\soundengine\Engine.h|19|error C2059: Syntaxfehler: '{'|
    c:\soundengine\soundengine\Engine.h|19|error C2334: Unerwartete(s) Token vor '{'; sichtbarer Funktionstext wird Übersprungen|
    c:\soundengine\soundengine\Engine.h|20|error C2059: Syntaxfehler: '{'|
    c:\soundengine\soundengine\Engine.h|20|error C2334: Unerwartete(s) Token vor '{'; sichtbarer Funktionstext wird Übersprungen|
    Engine.cpp|23|error C2039: 'ListenerPosition': Ist kein Element von 'SoundNode'|
    Engine.cpp|24|error C2039: 'ListenerPosition': Ist kein Element von 'SoundNode'|
    Engine.cpp|25|error C2039: 'ListenerPosition': Ist kein Element von 'SoundNode'|
    ||=== Build finished: 9 errors, 1 warnings ===|

    Allerdings nur für diese 3 arrays und nicht für andere variablen (hä?)

    kleine frage am rande:
    auf die membervariablen einer klasse greife ich doch über this zu ,oder?



  • Nexus schrieb:

    Du musst aber wissen, dass Arrays nicht mit der Initialisierungsliste initialisiert werden können, wenn sie Member einer Klasse sind.

    Hast du meine Antwort gelesen? 🙄

    Generell sind innerhalb der Klassendefinition nur Variablendeklarationen, keine -initialisierungen erlaubt.



  • ach so.
    Jetzt läuft es. 🙂
    Danke


Anmelden zum Antworten