2017-11-21 4 views
-1

Ich möchte den Typ der Klasse von T nach new_T ändern, ist das möglich?Kann ich den Template-Klassen-Typ mit dem Template-Funktionsparameter C++ ändern

template<class T,int count> 
class obj_pool{ 
    public: 
    template<class new_T> 
    void Retypedef(); 
}; 

Zum Beispiel obj_pool für int obj_pool<int> pool erstellt, und wenn der Benutzer pool.Retypedef<double>() Funktion aufruft, dass Pool wird Pool für Doppel.

+2

welche Art möchten Sie ändern, wie dies unter Verwendung dieser Vorlage aussehen könnte? Die Frage ist eher unklar – user463035818

+0

'T' ist nur ein Name. Sie könnten stattdessen 'new_T',' huhn' oder 'StackOverflow' verwenden, und es würde das gleiche Ergebnis liefern. – ForceBru

Antwort

0

Nr

In der Zukunft, wenn Sie eine Frage zu schreiben, sind einige Informationen über das zugrunde liegende Problem, das Sie versuchen zu lösen. Wenn Ihre angestrebte Lösung eine Sackgasse ist, können die antwortenden Personen das zugrunde liegende Problem für Sie lösen.

Oder stellen Sie eine neue Frage (über die Schaltfläche Frage stellen) nach dem zugrunde liegenden Problem.

0

In Ihrem Beispiel sind T und new_T zwei verschiedene Parameter.

obj_pool<int,3> x; 
x.Retypedef<double>(); // <- passing different types for new_T 
x.Retypedef<float>(); // <- does not change the type of x 

x.Retypedef<int>();  // ..and of course you can use the same type for 
         // new_T as for T 

Wenn Sie new_T wollen immer die gleiche sein wie T dann könnte man einfach schreiben:

template<class T,int count> 
class obj_pool{ 
    public: 
    void Retypedef(); // can use T 
}; 
Verwandte Themen