Así que estoy tratando de conseguir algo de código que se escribe para gcc para compilar en Visual Studio 2008. Tengo un problema que he reducido a esto:¿Por qué esta declaración de la clase no funciona en Visual Studio
class value_t
{
public:
typedef std::deque<value_t> sequence_t;
typedef sequence_t::iterator iterator;
};
este código falla:
1>cpptest.cpp
1>c:\program files\microsoft visual studio 9.0\vc\include\deque(518) : error C2027: use of undefined type 'value_t'
1> c:\temp\cpptest\cpptest.cpp(10) : see declaration of 'value_t'
1> c:\temp\cpptest\cpptest.cpp(13) : see reference to class template instantiation 'std::deque<_Ty>' being compiled
1> with
1> [
1> _Ty=value_t
1> ]
1>c:\program files\microsoft visual studio 9.0\vc\include\deque(518) : error C2027: use of undefined type 'value_t'
1> c:\temp\cpptest\cpptest.cpp(10) : see declaration of 'value_t'
Sin embargo cuando intento esto con std :: vector, que compila bien:
class value_t
{
public:
typedef std::vector<value_t> sequence_t;
typedef sequence_t::iterator iterator;
};
Wh ¿Está mal? He intentado agregar 'typename' en cualquier lugar que se me ocurra, pero en este momento estoy pensando que es solo un error en el Dinkumware STL. ¿Alguien puede explicar lo que está pasando y/u ofrecer una solución? Gracias.
¿"en todas partes se puede pensar en" incluir 'typedef typename sequence_t :: iterator iterator;'? – Stephen
Puede intentar una declaración directa antes de la declaración de clase. es decir, valor de clase_t; –
Bueno, esto siempre sucede, justo después de publicar esta pregunta, encuentro la combinación mágica en google para darme algo relevante. Ver http://www.gamedev.net/community/forums/topic.asp?topic_id=295828 que trata este tema; todavía no ofrece una solución. ¿Alguien puede confirmar que usar deque en esta situación no es estándar? ¿Hay alguna manera de hacer que esto funcione sin cambiar el archivo? –
Roel