2016-06-09 8 views
1

Zum BeispielWie initialisiert man ein Array in einer Template-Klasse mit einem benutzerdefinierten Wert?

template<size_t N> 
class A 
{ 
    array<int, N> m; 
    static A const UNIT {1, 1, ...}; // repeated N times, 
            // but I can't because of currently unspecified N 
} 

Wie eine Vorlage Größe Array mit dem benutzerdefinierten Wert 1 initialisieren?

+0

Nicht sicher, aber wenn ich '...' in Verbindung mit Vorlagen sehe, denke ich über die Verwendung von variadischen Vorlagenparameterlisten und das Entpacken nach. Ich weiß jedoch nicht, wie ich diese erzeugen soll, indem ich einen Template-Parameter benutze, der ihre Nummer angibt. –

+0

Füllung macht etwas Arbeit. Aber ich weiß nicht, wie ich es ausdrücken soll. kann mit Lambda sein ??? – user1899020

+1

Ah, naja. Ja sicher, das macht es. Ich nahm an, dass Sie nach einer Kompilierzeitlösung suchten. –

Antwort

2

Sie können die Füllfunktion verwenden. Dies funktioniert auch mit einem statischen const Mitglied.

template<size_t N> 
class A { 
    array<int, N> m; 
    public: 
    static A const unit; 
    A() { m.fill(1); } 
}; 

template<size_t N> 
A<N> const A<N>::unit{}; 
+0

Oh, ich verstehe. Ich habe die Frage falsch verstanden. –

Verwandte Themen