Ich möchte eine einfache Nachrichtenvorlagen-Klasse wie folgt erstellen. Ich folgte der Struktur wörtlich aus der chosen answer posted here. Dies scheint jedoch 2013.Template-Spezialisierung: C++ - Vorlagen, die nur bestimmte Typen akzeptieren (erneut besucht)
template<typename T> Message;
template<> Message <std::vector<uint8_t>>
{
public:
};
template<> Message <std::string>
{
};
IntelliSense mich in Visual Studio zu brechen sagt, dass Message is not a template
.
Platzieren class
vor Message
in der vorausen Erklärung ergibt ein etwas besseren, aber ebenso lästig IntelliSense Fehler: expected and identifier
nach der Öffnung Verstrebung {
jeder Schablone.
template<typename T> class Message;
template<> Message <std::vector<uint8_t>>
{
public:
};
template<> Message <std::string>
{
};
Ich sollte beachten, dass alle oben genannten Code derzeit in einer Header-Datei platziert wird.
Das sollte funktionieren (zweiten veröffentlichten Code)! Beachten Sie, dass ältere C++ - Compiler Leerzeichen zwischen '' '' '' '' '' '' einfügen müssen. Ist '' Header enthalten? Veröffentlichen Sie die vollständigen Fehlermeldungen. –
Platziere 'Klasse' vor' Nachricht' überall (sowohl in Deklaration als auch in Spezialisierungen). – lorro
verknüpfte Antwort auch behoben. – Jarod42