重载函数的歧义

机器人

首先,我应该指出这是我的第一个stackoverflow问题,因此请耐心等待。

我在重载c ++中的函数时遇到一些问题。我正在尝试使用以下原型创建一个函数:

void push_at_command(std::string, std::vector<std::string>, int);

void push_at_command(std::string, std::vector<std::string>, std::vector<std::string>, int);

void push_at_command(std::string, std::vector<std::string>, std::vector<std::string>, std::vector<std::string>, int);

void push_at_command(std::string, std::vector<std::string>, bool, int);

我最初希望最后一个重载(带有布尔值的重载)接受boost :: regex而不是字符串向量;

void push_at_command(std::string, boost::regex, int);

但遇到歧义错误...所以为了快速使代码“正常运行”,我想我将添加一个原型以接受一个标志,并使用向量中的第一个元素存储一个正则表达式字符串,但我似乎遇到类似的布尔值问题。

这就是我试图称呼这些重载的方式:

push_at_command(
    "AT?S", 
    boost::assign::list_of("(\\d{3}.\\d{3})"),
    true,
    0);
push_at_command(
    "AT?S", 
    boost::assign::list_of("L11")("L12"),
    0);
push_at_command(
    "AT?S", 
    boost::assign::list_of("L11"),
    boost::assign::list_of("L21")("L22"),
    0);

这是我得到的错误:

error: call of overloaded ‘push_at_command(const char [5], boost::assign_detail::generic_list<char [4]>, boost::assign_detail::generic_list<char [4]>, int)’ is ambiguous
note: candidates are:
note: void push_at_command(std::string, std::vector<std::basic_string<char> >, std::vector<std::basic_string<char> >, int)
note: void push_at_command(std::string, std::vector<std::basic_string<char> >, bool, int)

...与第三个函数调用有关。

只是要注意,在使用bool添加重载(或将字符串向量更改为regex)之前,我没有任何问题。

我以为这个问题与在函数调用中使用boost :: assign有关,我意识到我并不需要,但是我确实需要“单行”函数调用。...欢迎任何建议,因为我对C ++还是相当陌生。

谢谢

马克B

问题是,如boost文档中所示, But what if we need to initialize a container? This is where list_of() comes into play. With list_of() we can create anonymous lists that automatically converts to any container:

在这种情况下,您不希望能够转换为任何容器,而是需要特定的s向量。由于具有这种可转换类型,因此无法确定应转换为bool还是vector,从而使调用不明确。

如果您确实想继续创建的重载集(请退后一步,然后使用标志重新考虑您的方法),则需要将列表专门分配给向量(我假设此处list_of提供了将运算符转换为矢量):

push_at_command(
    "AT?S", 
    boost::assign::list_of("L11"),
    std::vector<std::string>(boost::assign::list_of("L21")("L22")),
    0);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

解决重载函数的歧义

来自分类Dev

如何消除重载函数的歧义

来自分类Dev

对重载整数构造函数的歧义调用

来自分类Dev

模板编程:对重载函数的歧义调用

来自分类Dev

对基类中的重载函数的歧义调用

来自分类Dev

C ++与Java中函数重载的歧义

来自分类Dev

对带有函数参数的重载函数进行模糊歧义调用

来自分类Dev

如何使用SFINAE解决重载函数中的歧义

来自分类Dev

C ++模板和对重载函数的歧义调用

来自分类Dev

由于std :: function而在构造函数重载中存在歧义

来自分类Dev

类模板构造函数重载解析度歧义

来自分类Dev

调用重载的构造函数会产生歧义错误C ++

来自分类Dev

如何解决“ fpclassify”:对重载函数的歧义调用

来自分类Dev

由于std :: function而在构造函数重载中存在歧义

来自分类Dev

如何使用SFINAE解决重载函数中的歧义

来自分类Dev

C ++模板和对重载函数的歧义调用

来自分类Dev

如何解决以下代码中的函数重载歧义

来自分类Dev

重载null歧义

来自分类Dev

Groovy歧义方法重载

来自分类Dev

函数继承中的函数重载歧义,其中函数具有相同数量的参数

来自分类Dev

我可以在重载的模板函数和更受限的模板函数之间消除歧义吗?

来自分类Dev

非捕获lambda和函数指针作为重载函数歧义中的参数

来自分类Dev

可变参数模板函数中对重载函数的歧义调用

来自分类Dev

VS2013中使用可变参数模板时“对重载函数的歧义调用”

来自分类Dev

指向重载const成员函数和成员运算符的歧义指针

来自分类Dev

'sqrt':对重载函数.. \ assimp \ vector3.inl的歧义调用

来自分类Dev

在VS2013中使用可变参数模板时“对重载函数的歧义调用”

来自分类Dev

当我添加头文件“ boost / function”时,使用“ bind”对重载函数进行歧义调用

来自分类Dev

Java:通用方法重载歧义

Related 相关文章

  1. 1

    解决重载函数的歧义

  2. 2

    如何消除重载函数的歧义

  3. 3

    对重载整数构造函数的歧义调用

  4. 4

    模板编程:对重载函数的歧义调用

  5. 5

    对基类中的重载函数的歧义调用

  6. 6

    C ++与Java中函数重载的歧义

  7. 7

    对带有函数参数的重载函数进行模糊歧义调用

  8. 8

    如何使用SFINAE解决重载函数中的歧义

  9. 9

    C ++模板和对重载函数的歧义调用

  10. 10

    由于std :: function而在构造函数重载中存在歧义

  11. 11

    类模板构造函数重载解析度歧义

  12. 12

    调用重载的构造函数会产生歧义错误C ++

  13. 13

    如何解决“ fpclassify”:对重载函数的歧义调用

  14. 14

    由于std :: function而在构造函数重载中存在歧义

  15. 15

    如何使用SFINAE解决重载函数中的歧义

  16. 16

    C ++模板和对重载函数的歧义调用

  17. 17

    如何解决以下代码中的函数重载歧义

  18. 18

    重载null歧义

  19. 19

    Groovy歧义方法重载

  20. 20

    函数继承中的函数重载歧义,其中函数具有相同数量的参数

  21. 21

    我可以在重载的模板函数和更受限的模板函数之间消除歧义吗?

  22. 22

    非捕获lambda和函数指针作为重载函数歧义中的参数

  23. 23

    可变参数模板函数中对重载函数的歧义调用

  24. 24

    VS2013中使用可变参数模板时“对重载函数的歧义调用”

  25. 25

    指向重载const成员函数和成员运算符的歧义指针

  26. 26

    'sqrt':对重载函数.. \ assimp \ vector3.inl的歧义调用

  27. 27

    在VS2013中使用可变参数模板时“对重载函数的歧义调用”

  28. 28

    当我添加头文件“ boost / function”时,使用“ bind”对重载函数进行歧义调用

  29. 29

    Java:通用方法重载歧义

热门标签

归档