Compiler-Warnung "non-static data member..." in Klassenheader



  • Hallo,

    beim Kompilieren meines Programms erhalte ich folgende Warnungen, das Programm funktioniert aber ohne Probleme. Trotzdem würde ich die Warnungen natürlich gerne verstehen und auch eliminieren bzw. umgehen.
    Es geht um die Anwendung eines Bubblesorts, der aufsteigend sortieren soll. Denke mal, dass das aber relativ egal ist; die Warnungen scheinen ja nichts mit dem Code in den Funktionen zu tun zu haben. Die privaten Variablen werden in den Funktionen dann benutzt.

    Bubble.h:4:12: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11 [enabled by default]
       int size=5;
                ^
    Bubble.h:5:23: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11 [enabled by default]
       int A[5]={5,3,0,-1,2};
                           ^
    Bubble.h:5:23: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]
    

    Bubble.h

    class Bubble
    {
     private:
      int size=5;
      int A[5]={5,3,0,-1,2};
     public:
      Bubble();
      void sort();
      void swap(int);
      void print();
    };
    

    Bubble.cpp

    #include "Bubble.h"
    #include <iostream>
    
    Bubble::Bubble()
    {}
    
    void Bubble::sort()
    {
      // Code...
    }
    
    void Bubble::swap(int j)
    {
      // Code...
    }
    
    void Bubble::print()
    {
      // Code...
    }
    

    main.cpp

    #include "Bubble.h"
    #include <iostream>
    
    int main(int argc, char *argv[])
    {
      Bubble bubble;
      bubble.sort();
      return 0;
    }
    

    Über Erklärungen würde ich mich freuen 🙂



  • Die Zuweisung von Klassenmembern direkt bei der Deklaration ist erst seit C++11 erlaubt. Setze einfach mal bei deinen Compilereinstellungen "-std=c++11".
    Wenn du nicht weiß, wie, dann schreib mal, welchen Compiler (bzw. IDE) du benutzt.



  • Stimmt, habe es mit -std=c++11 probiert und es wird ohne Warnungen kompiliert.

    Benutze den GNU g++ Compiler 4.8.4 (Ubunutu 14.04), aber hab das ja schon hinbekommen.

    Danke für deine Antwort 🙂


Anmelden zum Antworten