std :: array作为虚函数中的参数 [英] std::array as a parameter in virtual function

查看:227
本文介绍了std :: array作为虚函数中的参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想将std::array作为参数发送给我的虚拟函数

I want to send std::array as a parameter to my virtual function

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

,但gcc表示templates may not be 'virtual'.那么如何将std::array传递给函数?

but gcc said templates may not be 'virtual'. So how i pass a std::array to my function?

推荐答案

成员函数模板可能不是虚拟的.请参阅此问题.

A member function template may not be virtual. See this question.

但是,您可以通过将N移到Handler来使虚拟成员函数采用特定大小的std::array:

However, you can make a virtual member function takes a std::array of specific size by moving the N out to the 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;
};

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

Or simply passing a vector<char>, which given the context, could make more sense:

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

这篇关于std :: array作为虚函数中的参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆