Konstante member eine klasse



  • class foo{
    
     const vector<int> m_Dat;
    
      foo(int i=0) : m_Dat(i){
    
         m_Dat.pushback(....);
         m_Dat.pushback(....);
         m_Dat.pushback(....);
    
      }
    
    };
    

    das problem ist nun, das m_Dat nach dem konstruktor schon konstant bleiben soll, aber im Konstruktor will ich noch default Werte hinzufügen.. geht das irgendwie, oder muss ich "const " weg lassen.



  • du könntest eine funktion schreiben, die einen vector zurückgibt und damit deinen konstanten vector initialisieren:

    class Foo
    {
      const vector<int> dat;
      static vector<int> init_dat ()
      {
         vector<int> tmp;
         tmp.push_back(42);
         return tmp;
      }
    
    public:
      Foo () : dat(init_dat())
      { }
    };
    

    andererseits könntest du dir auch bestimmte werte für den vector generieren lassen, à la boost::counting_iterator:

    class Foo
    {
      const vector<int> v;
    
    public:
      Foo () : v(boost::counting_iterator<int>(0), 
                 boost::counting_iteraotr<int>(5))
      { }
    };
    

Anmelden zum Antworten