对重载函数进行模糊调用的解决方法

时间:2013-01-31 10:07:31

标签: c++

void printOutput(std::string text);
void printOutput(std::string& text);

这两个函数都会将一些文本输出到控制台,但我想处理以下情况:

std::string testOutput = "asdf";
output->printOutput(testOutput); // Gives the error as it can use either function

在某些情况下,我可能想:

output->printOutput("asdf"); // Only the first function can be used

对所有这些都是新手,有没有办法可以解决这个问题?

2 个答案:

答案 0 :(得分:2)

通过const引用:

void printOutput(const std::string &text);

两种形式都可以绑定到那种形式,你不必修改你打印的内容。

答案 1 :(得分:1)

除非您计划修改通过引用传入的字符串,否则单个

void printOutput(std::string const& text);

会奏效。

或者您希望在每个版本中做些不同的事情吗?