Существует структуру Tout, содержащую внутреннюю структуру Олово:C++ передать внутреннюю структуру в качестве параметра
template <typename T>
struct TOut
{
struct TIn
{
bool b;
};
TIn in;
T t;
};
Как правильно пройти олово в качестве формального параметра некоторого метода?
class Test
{
public:
template <typename T>
static void test (const TOut<T>::TIn &i) {} //Error
};
int main()
{
TOut <double> o;
Test::test(o.in);
}
Программа компилируется со следующей ошибкой:
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' будет известным (« конкретным ») типом, если он где объявлено рядом с «Tout» или внутри класса без шаблона. В тот момент, когда OP получает ошибку, 'Tin' пока не известен, потому что' TOut 'еще не создан. Кстати, термин «конкретный» обычно используется в контексте наследования (напротив «абстрактного»). –