2

为什么这会给出错误:Test::Test: no overloaded function takes 2 arguments

class Test
{
public:
    Test(const std::vector<int>&)
    {
    }
};

Test test(boost::assign::list_of(4));
4

1 回答 1

4

boost::assign::list_of 的实现需要容器类型,在本例中是您的 Test 类,具有两个参数构造函数,该构造函数采用第一个和最后一个迭代器(也称为范围)来初始化容器。

具体来说,错误来自下一行,在 boost::assign_detail::converter 类的转换方法中返回容器:

    template< class Container >
    Container convert( const Container*, default_type_tag ) const
    {
        return Container( begin(), end() );
    }

hmjd 的解决方法成功的原因是 std::vector 有一个构造函数需要两个迭代器。

于 2012-11-16T17:52:00.000 回答