2016-06-29 11 views
-3

Wie pro meine previous question, würde Ich mag folgendes tun:Hinzufügen von Parametern zu übermitteln deklarierte Vorlagen

#include <vector> 
#include<string> 
#include <cstdint> 

template<typename T> class Message; 

template<> class Message <std::vector<uint8_t>> 
{ 
public: 
    const T getKey() { return key; }; 
    const T getMessage() { return message; }; 

protected: 
    T key; 
    T message; 
}; 

jedoch IntelliSense sagt mir, dass identifier "T" is undefined"

Was mache ich falsch?

Antwort

2

Sie haben T von std::vector<uint8_t> überall in Ihrer Spezialisierung ersetzen:

template<> class Message <std::vector<uint8_t>> 
{ 
public: 
    const std::vector<uint8_t>& getKey() const { return key; }; 
    const std::vector<uint8_t>& getMessage() const { return message; }; 

protected: 
    std::vector<uint8_t> key; 
    std::vector<uint8_t> message; 
}; 

Ich füge auch const und Referenzen fehlt.

+1

Man könnte auch eine 'using T = std :: vector ; Anweisung hinzufügen. – skypjack

Verwandte Themen