In einer Klasse: static const double*



  • Hallo,
    ich möchte für einen gewissen Klassentyp ein Array (der Länge 3) definieren, dass für alle Instanzen dasselbe sein und nicht veränderbar sein soll.
    Darum würde ich es als static const double* definieren, ist das sinnvoll?

    Wie initialisiere ich dieses Array am besten? Im Konstruktor? Oder einfach, bevor ich eine erste Instanz der Klasse erzeuge?
    Des weiteren muss ich eine Funktion der Form const double* get_array() schreiben, die einen Zeiger auf das Array zurückliefert. Wie hat diese auszusehen?



  • Hallo,

    hab grad keinen Compiler da, um das zu testen, aber es sollte wohl so ähnlich funktionieren:

    //Headerdatei
    struct Error {
      static const char *errorTab[2];
    
      void printError(int errorNumber);
    };
    
    //Implementationsdatei
    const char* Error::errorTab[2] = {"IOError", "InternalError"};
    
    void Error::printError(int errorNumber) {
      if (errorNumber >=0 && errorNumber < 2)
        std::cerr<<errorTab[errorNumber]<<std::endl;
    }
    

    static Datenelemente müssen im Übrigen immer in der Implementationsdatei initialisiert werden.

    MfG

    GPC



  • So:

    #include <iostream>
    
    class foo {
    
        private:
            static const double bar[ ];
    
        public:
            foo( ) { };
    
            static size_t get_array_size( );
            static const double* get_array( );
    };
    
    const double foo::bar[ ] = { 1.1, 2.2, 3.3, 4.4, 5.5 };
    
    size_t foo::get_array_size( )
    {
        return ( sizeof( bar ) / sizeof( double ) );
    }
    
    const double* foo::get_array( )
    {
        return bar;
    }
    
    using namespace std;
    
    int main( )
    {
        foo a;
    
        const double *foobar = a.get_array( );
        size_t array_size = a.get_array_size( );
    
        for( size_t i = 0; i < array_size; ++i ) {
    
            cout << foobar[ i ] << endl;
        }
    
    }
    

    Greetz, Swordfish


Anmelden zum Antworten