"zu viele template-parameter-Listen" Fehler bei der Spezialisierung einer member-Funktion
Ich würde gerne definieren template-member-Methoden innerhalb einer template-Klasse in etwa so:
template <typename T>
class CallSometing {
public:
void call (T tObj); //1st
template <typename A>
void call (T tObj, A aObj); //2nd
template <typename A>
template <typename B>
void call (T tObj, A aObj, B bObj); //3rd
};
template <typename T> void
CallSometing<T>::call (T tObj) {
std::cout << tObj << ", " << std::endl;
}
template <typename T>
template <typename A> void
CallSometing<T>::call (T tObj, A aObj) {
std::cout << tObj << ", " << aObj << std::endl;
}
template <typename T>
template <typename A>
template <typename B> void
CallSometing<T>::call (T tObj, A aObj, B bObj) {
std::cout << tObj << ", " << aObj << ", " << bObj << ", " << std::endl;
}
Aber wenn instantializing der Vorlage-Klasse, es ist ein Fehler in Bezug auf die drei-argument menthod definition:
CallSometing<int> caller;
caller.call(12); //OK
caller.call(12, 13.0); //OK
caller.call (12, 13.0, std::string("lalala!")); //NOK - complains "error: too many template-parameter-lists"
Könnte Sie bitte zeigen, was ich falsch mache? Warum die (2.) die Methode ist OK, aber die (3.) führt zu einer compile-Zeit-Fehler?
InformationsquelleAutor Marcin | 2010-08-29
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bitte Lesen Sie ein C++ - template-tutorial, wie man eine Vorlage multiple Parameter. Statt
Die Art, wie es geschehen ist, ist die
Mehrere template-Klauseln Darstellung der verschiedenen Ebenen des templates (Vorlage-Klasse -> member-template).
:)