Hay una Tout estructura que contiene la estructura interna de estaño:C++ pasan estructura interna como parámetro
template <typename T>
struct TOut
{
struct TIn
{
bool b;
};
TIn in;
T t;
};
cómo pasar correctamente estaño como un parámetro formal de algún método?
class Test
{
public:
template <typename T>
static void test (const TOut<T>::TIn &i) {} //Error
};
int main()
{
TOut <double> o;
Test::test(o.in);
}
El programa se compila con el siguiente error:
Error 4 error C2998: 'int test' : cannot be a template definition
http://stackoverflow.com/questions/7178948/problem-with-functions-accepting-inner-classes-of-template-classes – Lol4t0
@TJD 'Tin' sería un tipo conocido (" concreto ") si donde se declara al lado de 'Tout', o dentro de una clase que no sea de plantilla. En el punto donde el OP está recibiendo un error, 'Tin' aún no se conoce, porque' TOut 'aún no está instanciado. Por cierto, el término "concreto" se usa normalmente en el contexto de la herencia (opuesto a "abstracto"). –