2012-05-03 18 views
6

me dijeron que el siguiente era posible debido a los cambios en C++ 11:C++ 11 llamar al constructor del constructor del tipo misma clase

class SomeType { 
int number; 

public: 
SomeType(int new_number) : number(new_number) {} 
SomeType() : SomeType(42) {} 
}; 

Pero cuando intento de construir consigo un error:

"SomeType" is not a nonstatic data member or base class of class "SomeType" 

error C2614: 'SomeType' : illegal member initialization: 'SomeType' is not a base or member 

¿Esta característica aún no se admite en Visual Studio 2010? ¿Debo configurar algo para que esto se construya? ¿Qué está mal?

+1

Para referencia futura, estos se conocen como _delegating constructors_. – ildjarn

+0

por cierto, es compatible con gcc (mingw-w64, devC++, código :: bloques, mingw, DJGPP) –

+1

@JimMichaels: IDE de informes (código :: bloques) es un poco sorprendente. Uso code :: blocks y clang ... –

Respuesta

10

No es compatible con VS2010. La mayoría de las características de C++ 11 no son compatibles con VS2010 (o VS11 para el caso)

Here es un cuadro de funciones admitidas en VC10 y VC11.

+0

¡Frustrante! Gracias por el enlace. – user974967

+1

Tenga en cuenta que VS2010 salió mucho antes de que el borrador del estándar C++ 11 estuviese aún cerca de completarse. Diría que tenemos suerte de que sea compatible con las características que tiene. El apoyo de Lambda en particular es un regalo del cielo. – brendanw

+3

@brendanw: C++ 11 había estado en obras durante bastante tiempo. GCC 4.3 tuvo soporte para referencias rvalue y plantillas variadic (por ejemplo) en 2008, 3 años antes de que se enviara VS10 (y VS10 se envió * sin * soporte de plantilla variadic, y ahora, en 2012, VS11 todavía no tiene soporte para eso). tenía lambdas en 2010, un año antes que VS10 (y los lambda en VS10 tienen errores). Ahora, en 2012, VS11 está a punto de lanzarse con un soporte deficiente para C++ 11, mientras que GCC 4.7 se lanzó en marzo con soporte casi completo de C++ 11. No creo que la suerte tenga algo que ver con eso. – GManNickG

Cuestiones relacionadas