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

Adding parameters to forward-declared templates

本文关键字:添加 参数 声明      更新时间:2023-10-16

根据我之前的问题,我想做以下事情:

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

然而,智能感知告诉我identifier "T" is undefined"

我做错了什么?

你必须在你的专门化中处处用std::vector<uint8_t>代替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和参考。