2012-01-25 14 views
5

Jest Tout struktura zawierająca wewnętrzną Tin strukturę:C++ przechodzą wewnętrzną strukturę jako parametr

template <typename T> 
struct TOut 
{ 
    struct TIn 
    { 
      bool b; 
    }; 

    TIn in; 
T t; 
}; 

Jak prawidłowo przechodzić cyny jako parametru formalnego jakiejś metody?

class Test 
{ 
public: 
    template <typename T> 
    static void test (const TOut<T>::TIn &i) {} //Error 
}; 


int main() 
{ 
TOut <double> o; 
Test::test(o.in); 
} 

Program kompiluje się z powodu następującego błędu:

Error 4 error C2998: 'int test' : cannot be a template definition 
+0

http://stackoverflow.com/questions/7178948/problem-z -funkcje-uzyskiwanie-w klasie--klasy-szablonów – Lol4t0

+0

@ TJD 'Cyna' byłaby znana ("konkretna"), gdyby była gdzie zadeklarowany obok 'Tout' lub wewnątrz klasy innej niż szablon. W punkcie, w którym OP otrzymuje błąd, 'Tin' nie jest jeszcze znany, ponieważ' TOut 'nie jest jeszcze utworzony. BTW, termin "beton" jest zwykle używany w kontekście dziedziczenia (przeciwieństwo "abstrakcji"). –

Odpowiedz

2

Dlaczego nie można użyć prostsze

template <typename T> 
static void test (const T& i) 

zamiast tego?

Powiązane problemy