Funktion, Member als default parameter

06/11/2015 - 14:56 von Heinz Saathoff | Report spam
Moin,

bei einem Programmumbau bin ich auf die Fage gestossen, ob es möglich
ist, den Funktionsparameter einer Memberfunktion mit einer
Membervariablen der Klasse als Default zu setzen.
Hier ein Beispiel:

#include <string>
#include <iostream>

class AAA {
public:
AAA() : s("Ja") {}
void fa(std::string ms = s); // Fehler
void fb(std::string ms = AAA::s); // Fehler
void fc(std::string ms = this->s); // Fehler
std::string s;
};

int main()
{
AAA a;
a.fa();
a.fb();
a.fc();
a.fa("Nein");
return 0;
}

Keine der Funktionen fa, fb, fc wird vom Compiler akzeptiert.
Bei fa und fb bekomme ich den Fehler
no instance of class 'AAA' for member 'AAA::s'
Bei fc
Error: undefined identifier 'this'

Da die Funktionen doch im Kontext des Objektes laufen, müsste es doch
möglich sein, den Member 's' des aufrufenden Objekts zu nehmen?


- Heinz
 

Lesen sie die antworten

#1 ram
07/11/2015 - 09:55 | Warnen spam
Heinz Saathoff writes:
void fa(std::string ms = s); // Fehler
void fb(std::string ms = AAA::s); // Fehler



»a non-static member shall not be used in a default
argument«, 8.3.6p9

void fc(std::string ms = this->s); // Fehler



»The keyword "this" shall not be used in a default
argument of a member function.«, 8.3.6p8

Ähnliche fragen