Default-Parameter Problem



  • c:\Visual Studio Projects\UebeProg\Training.cpp(7): error C2648: 'M::x' : use of member as default parameter requires static member

    Das ist die Meldung, die sich mein Compiler bei diesem Code ausgedacht hat, um mich zu ärgern:

    #include<stdio.h>
    
    class M{
    	int x;
    public:
    	M():x(3){}
    
    	void insert(int k=x-1){
    		x=k;
    	}
    
    	int getX(){
    		return x;
    	}
    };
    
    int main(){
    	M dummy;
    	dummy.setX();
    	printf("%d",dummy.getX());
    	getchar();
    	return 0;
    }
    

    Jetzt ist es aber so, dass der Default-Parameter entfallen können soll,
    und in diesem Fall soll einfach x-1 verwendet werden können.
    Static darf x aber auch nicht sein, es soll jedenfalls jedes Objekt dieser Klasse sein eigenes x bekommen.
    Gibt's da einen Trick, wie man das auch mit nicht-Static Members zum Laufen bekommen könnte?



  • Ach sorry, falsch gelesen, du musst die Funktion insert einfach nur überladen:

    void insert(){           //wenn kein Argument übergeben wird, wird diese Funktion aufgerufen
            --x;                 //(x = x-1) 
        }
    

    Nochmal editiert und ein Präfix aus dem Postfix gemacht (bessere Performance).



  • benschni schrieb:

    Nochmal editiert und ein Präfix aus dem Postfix gemacht (bessere Performance).

    Bei einem int: sicher nicht! 😃


Log in to reply