2017-01-04 4 views
0

Ich habe eine Vorlagenklasse S<T> mit einer verschachtelten Vorlagenklasse S<T>::Q<M>. Die innere Klasse enthält eine statische Instanz von sich selbst.So definieren Sie ein statisches Mitglied einer verschachtelten Vorlage (Vorlagenklasse innerhalb der Vorlagenklasse)

Wie kodiere ich die Definition von S<T>::Q<M>::q_ im folgenden Codebeispiel? (Die Linie markiert mit <---- error)

#include <iostream> 

struct A {}; 
struct B {}; 

template<typename T> 
struct S { 

    template<typename M> 
    struct Q { 
    int x; 
    Q() : x(1) {} 

    static Q q_; 
    }; 
}; 

template<typename T, typename M> 
typename S<T>::template Q<M> S<T>::Q<M>::q_; // <---- error 

int main() 
{ 
    std::cout << S<A>::Q<B>::q_.x; 
} 

Antwort

3

Sie sollten es auf folgende Weise definieren:

template<typename T> 
template<typename M> 
S<T>::Q<M> S<T>::Q<M>::q_ = Q(); 
Verwandte Themen