Сначала код:
class CInner {
public:
CInner( const CInner& another ) { //impl here }
private:
// some member variables
}
class COuter {
public:
COuter( const CInner& inner ) : inner( inner ) {}
private:
CInner inner;
}
Да, в COuter::COuter( const CInner& )
параметр имеет то же имя, что и переменная-член.
В VC ++, который работает - VC ++ получает идею, что разумно только инициализировать переменную-член параметром, и вот что происходит - CInner::inner
инициализируется с параметром. Но когда то же самое компилируется с GCC, оно интерпретируется по-другому: GCC инициализирует CInner::inner
самой собой , и поэтому оно остается неинициализированным.
Какой из компиляторов прав?