namespace wird nicht gefunden



  • Ich habe folgenden Code:

    #ifndef FFTFUNCTIONS_H
    #define FFTFUNCTIONS_H
    
    namespace fftutils
    {
        static inline void printarray(complex<double> * array, size_t nx, size_t ny);
    }
    
    static inline
    void  fftutils::printarray(complex<double> * array, size_t nx, size_t ny)
    {
        cout << endl << "----------- array: ---------------" << endl;
        for (size_t y = 0; y < ny; y++) {
            for (size_t x = 0; x < nx; x++) {
                cout << " y:" << y << " x:" << x
                     << " c:(" << array[y + ny *x].real() << " , " << array[y + ny *x].imag() << " )" << endl;
            }
        }
    }
    
    #endif // FFTFUNCTIONS_H
    

    Wenn ich das in einer anderen cpp Datei lade und verwende,

    fftutils::printArray(in, nx, 1);
    

    dann bekomme ich die Fehlermeldung:

    FFTWPlanAndExecute.h(71) : error C2039: 'printArray' : is not a member of 'fftutils'
    FFTWPlanAndExecute.h(71) : error C3861: 'printArray': identifier not found

    Ich sehe den Fehler nicht...



  • Oben schreibst du printarray und unten printArray. 🤡



  • capslock schrieb:

    Oben schreibst du printarray und unten printArray. 🤡

    Vielen Dank, ich wäre nicht darauf gekommen...



  • Warum static inline? Da gibt's doch keinen guten Grund für.

    Übrigens: Es lohnt sich, die Geschwindigkeit von opeartor*(complex<>,complex<>) unter verschiedenen Compileroptionen zu testen und mit

    complex<double> mal(complex<double> a, complex<double> b)
    {
      return complex<double>(
        a.real()*b.real() - a.imag()*b.imag(),
        a.real()*b.imag() + a.imag()*b.real(),
      );
    }
    

    zu vergleichen. Zumindest in der Standardeinstellung ist der operator* für komplexe Zahlen beim GCC relativ langsam. Das liegt daran, dass es eine Sonderbehandlung für infinity/nan gibt, die man eigentlich oft nicht benötigt.


Anmelden zum Antworten