Ich bin neu in C++ und ich versuche, Vorlagen zu verwenden, aber ich habe Probleme. Was ich zu tun versuche, ist: versuchen, das Quadrat einer Zahl mit Vorlage zu berechnen, und die Zahl kann grundlegende Datentypen wie int, float, sowie komplexe Zahlen sein. Ich habe auch eine komplexe Klasse mit Vorlage implementiert, und die Codes sind wie folgt:
template <typename T>
class Complex {
public:
T real_;
T img_;
Complex(T real, T img) : real_(real), img_(img) { }
};
template <typename T>
T square(T num) {
return num * num;
}
template <>
Complex<typename T> square(Complex<typename T> num) {
T temp_real = num.real_*num.real_ - num.img_*num.img_;
T temp_img = 2 * num.img_ * num.real_;
return Complex(temp_real, temp_img);
}
Ich habe versucht, Template-Spezialisierung zu verwenden, um mit dem Sonderfall umgehen, aber es gab mir Fehler:
using ‘typename’ outside of template
und der Fehler tritt bei der Spezialisierungsmethode der Vorlage auf. Bitte weisen Sie mich auf meine Fehler hin. Danke!