Il seguente è ben definito?Dipendenza circolare nell'elenco di inizializzazione del costruttore
class A;
class B;
// define A, which takes B& in constructor
// define B, which takes A& in constructor
class C
{
A a;
B b;
public:
C() : a(b), b(a) { /* stuff with a and b */ }
}
Esempio completo a ideone.com.
È sicuro/ben definito fino a quando i costruttori per A
e B
non fanno nulla con i riferimenti che ottengono?
Perché il downvote? Fammi sapere come posso migliorare la domanda. – Claudiu
Non penso che il compilatore ti permetta di fare 'a (b)' perché quando 'a' viene inizializzato,' b' non è ancora inizializzato. – user3528438
@ user3528438: Certamente, l'esempio ideone viene compilato ed eseguito. Ma è perché sono fortunato o perché è ben definito nello standard? – Claudiu