将参数添加到前向声明的模板

时间:2016-06-29 21:14:36

标签: c++ templates template-specialization

根据我的previous question,我想执行以下操作:

#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;
};

但是,IntelliSense告诉我identifier "T" is undefined"

我做错了什么?

1 个答案:

答案 0 :(得分:2)

您必须在专业化的任何地方T替换std::vector<uint8_t>

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;
};

我还添加了缺失的const和引用。