kostenloser Webspace werbefrei: lima-city


Suche auf lima-city

  • in: Funktion wird zweimal deklariert?

    geschrieben von matem

    Hallo toolz,

    beim LNK2005 hilft dir der Präprozessor nicht, da der Compiler mit der zweifachen Definition der Fakultät-Funktion kein Problem hat. Das cpp File wird, wenn es zusätzlich eingebunden wird, zweimal kompiliert. Das ist erst einmal nicht unbedingt verkehrt.
    Man kann erstens im Make-File bzw. in den Projekt-Einstellungen festlegen, was kompiliert werden soll.
    Dann sollte sicherlich für das Linken noch festgelegt werden, dass wegen
    #include "datop.cpp

    der Linker datop.obj nicht mehr mit linkt. Dann wird er sich sicherlich auch nicht darüber beschweren, dass er die Funktionsdefinition zweimal findet.

    Man kann es aber auch gleich so machen, dass man wie darkpandemic zeigt nur die Funktionsdeklaration einbindet. Damit weiss der Compiler immer Bescheid und geht davon aus, dass die Funktion auch irgendwo definiert ist.
    Man muss datop.cpp dann nur noch einmal kompilieren und wie gehabt beim Linken einmal einbinden.
  • in: cannot convert 'this' pointer from 'const Foo' to 'Foo &'

    geschrieben von matem

    Hallo darkpandemic,

    es geht bei der Rückgabe von const Foo& im Zuweisungsoperator prinzipiell darum, Folgendes zu vermeiden:
    (f=13)=15;

    Wie kann man z.B. Folgendes ausschließen?
    Foo v = (f=13);

  • in: cannot convert 'this' pointer from 'const Foo' to 'Foo &'

    geschrieben von matem

    Danke darkpandemic.

    Du hast Recht, dass GetFooCnt const sein muss.

    Hier noch die Operatoren:
    const Foo& operator=(const Foo & rhs)
    	{
    		m_FooCnt = rhs.GetFooCnt();
    
    		return *this;
    	}	
    	 const Foo& operator=(const int & rhs){
    		m_FooCnt = rhs;
    
    		return *this;
    	}
    	 operator const int() {
    		 return this->GetFooCnt();
    	 }

    Damit klappt dann auch:

    Foo f  =  13;
    const int n = f;


  • in: cannot convert 'this' pointer from 'const Foo' to 'Foo &'

    geschrieben von matem

    // Die obige Fehlermeldung erscheint beim Kompilieren. Rätselfrage: Wo ist der Fehler?

    class Foo
    {
    private:
    int m_FooCnt;

    public :


    Foo(){
    m_FooCnt = 0;
    }

    Foo(const Foo & rhs)
    {
    m_FooCnt = rhs.GetFooCnt();
    }

    int GetFooCnt() { return m_FooCnt; } ;

    int& operator=(const Foo &)
    {
    return m_FooCnt;
    }
    };

    class Bar : public Foo
    {
    int BarCnt;
    };
  • in: Spiele mit C++

    geschrieben von matem

    Man kann sich eine komplette Entwicklungsumgebung downloaden. Suche ganz einfach nach Entwicklungsumgebung und C++.

    mi-ha schrieb:
    schinkenmedia schrieb:
    Ich habe mal ne dumme Frage, aber mein Google scheitert daran irgendwie:
    Wo kann ich mir C++ downloaden (legal!)
    Ich finde wenn ich google nichts passendes :(

    Über eine Antwort würde ich mich freuen :)


Login zum Webhosting ohne Werbung!