favor, eche un vistazo a este código:clase derivada como argumento predeterminado g ++
template<class T>
class A
{
class base
{
};
class derived : public A<T>::base
{
};
public:
int f(typename A<T>::base& arg = typename A<T>::derived())
{
return 0;
}
};
int main()
{
A<int> a;
a.f();
return 0;
}
compilación genera el siguiente mensaje de error en g ++:
test.cpp: In function 'int main()':
test.cpp:25: error: default argument for parameter of type
'A<int>::base&' has type 'A<int>::derived'
La idea básica (usando clase derivada como valor por defecto para el argumento de tipo de referencia base) funciona en Visual Studio, pero no en g ++. Tengo que publicar mi código en el servidor de la universidad donde lo compilan con gcc. ¿Que puedo hacer? ¿Hay algo que este olvidando?
No se ha resuelto el error, pero puede escribir 'int f (base & arg = derived())'. – kennytm