Vektor initialisieren..



  • Hallo,

    Erstmal mein Code:

    class IchBinDoof { int a = 99; };
    int _tmain(int argc, _TCHAR* argv[])
    {
    vector<IchBinDoof> v( 5 );
    cout << v.at(2).a;
    ...
    }
    

    Warum kompiliert das Dingensen jetzt nicht? 🕶



  • Hallo,

    Der Compiler beschwert sich hier darüber, dass a in deiner Klasse private ist und du folglich nicht von außerhalb der Klasse auf diese zugreifen kannst.

    btw: Du weißt aber, dass _tmain und _TCHAR nicht Bestandteil von standard c++ sind, oder?

    Gruß, Caipi



  • Der Compiler beschwert sich hier darüber, dass a in deiner Klasse private ist und du folglich nicht von außerhalb der Klasse auf diese zugreifen kannst.

    Leider hilft public: in der Klasse oder struct anstelle von class auch nicht weiter.

    error C2864: 'IchBinDoof::a' : only static const integral data members can be initialized within a class

    btw: Du weißt aber, dass _tmain und _TCHAR nicht Bestandteil von standard c++ sind, oder?

    Dachte ich mir da ich VC++ benutze. 😃



  • Hallo,

    Der Fehler wiederum resultiert aus der Tatsache, dass du versuchst innerhalb der Klasse a zu initialisieren. Das geht (wie auch die Fehlermeldung sagt) nicht => Benutze hierzu einen Konstruktor. 🙂
    (Zugegeben dieser Fehler ist mir beim ersten Überfliegen des Codes gar nicht aufgefallen... 🙄 )

    Gruß, Caipi



  • Danke. 😉

    struct IchBinDoof {
    	int a;
    	IchBinDoof(){ a = 99; }
    };
    


  • So, und jetzt denk mal drüber nach 😉

    #include <iostream>
    #include <vector>
    
    class Foo
    {
    public:
    	int a;
    	static const int b = 1234;
    
    	Foo()
    		: a(0)
    		{ }
    
    	Foo(int a)
    		: a(a)
    		{ }
    
    };
    
    using namespace std;
    
    int main(int argc, char** args)
    	{
    		vector<Foo> vec(5);
    		cout << vec.at(3).a << endl;
    		cout << Foo::b << endl;
    
    		return 0;
    	}
    

    Grüße...

    Heiko



  • Danke, aber habe gestern erst mit C++ angefangen. Da fällt mir das alles noch sehr, sehr schwer und ich sehe nicht alles sofort. (klar) 😞



  • Wenn du gestern erst angefangen hast mit C++ und heute schon bei Klassen angekommen bist (mit Verwendung von STL-Container-Klassen) musst du doch bestimmt kaum mehr als 2 Stunden geschlafen und weit aus mehr als fünf Liter Kaffee intus haben...

    Wenn ich mich an mein C++-Buch erinnere, wurden Klassen erst nach ca. 40% und die Container im letzten Drittel behandelt.

    Meine Tipps:

    a) mehr Pausen
    b) von Anfang an den Compiler- bzw. Linker-Error mit angeben -> "Warum kompiliert das Dingensen jetzt nicht?" hat ungefähr soviel Aussagekraft wie trockenes Toast auf zwei Meter.

    In dem Sinne, willkommen in der bizarren Welt von C++.

    Grüße...

    Heiko



  • Hoi, programmiere in diversen anderen Sprachen. Von daher sind mir die Konzepte schon so'n bissel bekannt. 😉

    Btw.: Oben habe ich die komplette Fehleranzeige nicht eingefügt weil sie einfach zu lang war und ich dachte ihr seht sofort was da vllt. nicht stimmt.

    Grüßle 🙂



  • notebook schrieb:

    Btw.: Oben habe ich die komplette Fehleranzeige nicht eingefügt weil sie einfach zu lang war und ich dachte ihr seht sofort was da vllt. nicht stimmt.

    Zu lang für wen? Ich glaube Marc++us hätte wenig dagegen gehabt 😃
    Fehlermeldungen gehören bei sowas einfach dazu.



  • Ich merk's mir. 🙂


Anmelden zum Antworten