Initialize const member variables

Ich habe C ++ - Code, der sich wie folgt zusammensetzt:

class Foo{
    bool bar;
    bool baz;
    Foo(const void*);
};
Foo::Foo(const void* ptr){
    const struct my_struct* s = complex_method(ptr);
    bar = calculate_bar(s);
    baz = calculate_baz(s);
}

Semantisch sollten die Membervariablen bar und baz const sein, da sie sich nach der Initialisierung nicht ändern sollten. Es sieht jedoch so aus, als müsste ich sie in einer Initialisierungsliste initialisieren, anstatt sie zuzuweisen. Um klar zu sein, ich versteheWaru Ich muss das machen. Das Problem ist, dass ich anscheinend keine Möglichkeit finde, den Code in eine Initialisierungsliste zu konvertieren, ohne eine der folgenden unerwünschten Aktionen auszuführen:

Anrufcomplex_method zweimal (wäre schlecht für die Leistung)Hinzufügen des Zeigers zur Foo-Klasse (würde die Klassengröße unnötig groß machen)

Gibt es eine Möglichkeit, die Variablen zu konstanten, während diese unerwünschten Situationen vermieden werden?

Antworten auf die Frage(8)

Ihre Antwort auf die Frage