std :: array作为虚函数中的参数

Mik*_*aev 4 c++ arrays c++11

我想std::array作为参数发送到我的虚函数

class Handler:
    {
    public:
        template <std::size_t N>
        virtual void handle(const std::array<char, N>& msg, std::vector<boost::asio::const_buffer>& buffers) = 0;
    };
Run Code Online (Sandbox Code Playgroud)

但是gcc说templates may not be 'virtual'.那么我如何传递std::array给我的功能呢?

Bar*_*rry 5

成员函数模板可能不是虚拟的.看到这个问题.

但是,你可以做一个虚成员函数需要std::array的特定通过移动尺寸N出到Handler:

template <size_t N>
class Handler:
{
public:
    virtual void handle(const std::array<char, N>& msg,
        std::vector<boost::asio::const_buffer>& buffers) = 0;
};
Run Code Online (Sandbox Code Playgroud)

或者简单地传递vector<char>给定上下文的a可能更有意义:

class Handler:
{
public:
    virtual void handle(const std::vector<char>& msg,
        std::vector<boost::asio::const_buffer>& buffers) = 0;
};
Run Code Online (Sandbox Code Playgroud)