posibles duplicados:
GCC problem : using a member of a base class that depends on a template argument
Why does GCC need extra declarations in templates when VS does not?
Why doesn’t a derived template class have access to a base template class
iphone compiler inherited templated base classes with passed through type not being expanded in time (just look)C++ clase de plantilla heredar otra clase de plantilla con un tipo de entrada de plantilla-especificado
Lo sentimos por el título confuso, lo mejor que se me ocurre.
Aquí hay algo de código para ilustrar mi problema ...
Una clase de plantilla base:
template<class T> class TestBase
{
public:
int someInt;
};
El intento de subclase TestBase con otra clase de plantilla ...
Esto obtiene "someInt no fue declarado en este ámbito" en el momento de la compilación:
template<class X> class TestSub : public TestBase<X>
{
void testf()
{
someInt = 0; //Error: "someInt was not declared in this scope"
}
};
B) Esto funciona bien (la diferencia de que yo indique entrada de la plantilla de TestBase explícitamente)
template<class X> class TestSub : public TestBase<string>
{
void testf()
{
someInt = 0;
}
};
¿Por qué TestSub a partir de (A) no heredarán someInt correctamente como lo hace en (B)?
Gracias de antemano.
Cerrado como una estafa de http://stackoverflow.com/questions/11405/gcc-problem-using-a-member-of-a-base-class-that-depends-on-a-template-argument y http://stackoverflow.com/questions/1643035/typedef-in-template-base-class y http://stackoverflow.com/questions/1239908/why-doesnt-a-derived-template-class-have-access- to-a-base-template-class y http://stackoverflow.com/questions/2812470/why-does-gcc-need-extra-declarations-in-templates-when-vs-does-not y varios más –