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!