Files aufrufen



  • @ inter2k3 machst du üblicherwesise gerne definitionen alla

    int int;
    double double;
    //etc?
    

    Und die Vereinfachung habe ich nur aus Versändnisgründen nicht gemacht, damit er mit dem Rückgabewert arbeiten muss...

    Was denkst du was der Compiler dir sagt, wenn du die Zeile myclass myclass nicht auskommentierst.

    class myclass{};
    
    int main() 
    { 
    	//myclass myclass; //Fehler...
    
    	myclass mycls1;
    	myclass mycls2;
    }
    


  • HighLigerBiMBam schrieb:

    @ inter2k3 machst du üblicherwesise gerne definitionen alla

    int int;
    double double;
    //etc?
    

    Öhm, nein nicht wirklich.
    Da ist c&p aus seinem code schuld 😛

    HighLigerBiMBam schrieb:

    Und die Vereinfachung habe ich nur aus Versändnisgründen nicht gemacht, damit er mit dem Rückgabewert arbeiten muss...

    Du rufst aber einen nicht existierenden default-constr. auf und danach eine nicht existierende member-funktion.



  • inter2k3 schrieb:

    Du rufst aber einen nicht existierenden default-constr. auf und danach eine nicht existierende member-funktion.

    Ach ****piep**** verflucht sei Copy&Paste 😃

    ich editiere es...



  • Vielen Dank euch beiden! 🙂

    Eigentlich erscheinen mir (jetzt, im Nachhinein) beide Codes logisch und nachvollziehbar. Besten Dank nochmals!



  • Ah, noch eine Frage.
    Das ist also wirklich falsch? :

    terminal_printer printer; 
        printer.terminal_printer(original_coordinates);
    


  • wie inter2k3 schon erwähnte hat diese Klasse keinen defaultkonstruktor und somit kann diese nicht so erstellt werden. Und die Methode Terminal_Printer existiert nicht.



  • Aber ist es nicht so, dass der default-Konstruktor "automatisch" erstellt wird?
    Oder ist das vom Editor-Programm abhängig?
    In Java ist es ja so, dass immer ein default-Konstruktor existiert.



  • Aber ist es nicht so, dass der default-Konstruktor "automatisch" erstellt wird?

    Nur wenn du keinen Konstruktor stellst. Sobald du einen hast, wird dieser nicht mehr erstellt. Das Gleiche gilt für den Kopierkonstruktor und Zuweisungsoperator.

    Es ist nicht unüblich, dass man dieses Verhalten nicht haben möchte man kann dafür eine Klasse Uncopyable erstellen, welche diese Funktionalitäten definieren aber nicht implementieren. Dies hat dann zur Folge, dass du schon beim Linken einen Fehler bei falscher Verwendung bekommst.

    class Uncopyable
    {
    protected:
    	Uncopyable(){}
    	~Uncopyable(){}
    
    private:
    	Uncopyable(const Uncopyable&);
    	Uncopyable& operator=(const Uncopyable&);
    };
    

    Eine Klasse die man nicht zuweisen, oder kopieren darf muss dann nur noch von dieser erben. Du kannst auch boost::noncopyable verwenden 😉



  • Ah stimmt.
    Bei Java ist das ja genau so.
    Vielen Dank!



  • ThomiC++ schrieb:

    Ah stimmt.
    Bei Java ist das ja genau so.
    Vielen Dank!

    Tu mir den Gefallen und vergleiche C++ nie wieder mit dem kotzigen Java.


Anmelden zum Antworten