首先我应该指出这是我的第一个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 ::正则表达式,而不是一个字符串向量;
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添加重载(或将字符串向量更改为正则表达式)。
我假设这个问题与我在函数调用中使用boost :: assign有关,我意识到我不需要,但我真的需要'单线'函数调用。 ...任何意见的欢迎,因为我对C++来说是新手。
感谢
我的个人建议:如果避免语法超载,你的生活会更快乐。 –
感谢您的建议,我想您可能是对的! –