Angenommen, ich habeWenn Klasse A seine Konstruktionsparameter ändert, kann ich const A mit const Parametern initialisieren?
class A final {
int& ir;
public:
A(int& x) : ir(x) { }
void set(int y) { ir = y; } // non-const method!
int get() const { return ir; }
};
und
const int i;
Offensichtlich ich nicht
A a(i);
da diese Pausen Konstantheit haben kann. Aber ich kann auch nicht haben
const A a(i);
trotz der Tatsache, dass dies constness de-facto nicht brechen wird. C++ unterstützt keine "Const-Only" -Ktors, z.B. in diesem Fall würde man eine const int&
nehmen. Gibt es eine Möglichkeit const A a
Einwickeln einen Verweis auf i
zu erhalten - anders als
A a(const_cast<int &>(i))
?
Könnten Sie bitte beschreiben, was Sie erreichen wollen? – paceholder
"trotz nicht brechen connessness"? Ich verstehe nicht. Sie können anschließend nach 'a.ir' schreiben. Ich würde sagen, das ist ziemlich unsicher. –
Was in den Sinn kommt, ist 'Klasse A {Variante v; A (const int & a): a (a) {} A (int & a): a (a) {}};'. nicht sicher, ob das so funktioniert, wie es ist, aber es könnte ein Anfang sein. Dann besuchen Sie 'a.v' mit einem' [] (auto && a) {} ' –