如何在C++中使一个模糊的调用变得明显?

Jic*_*hao 3 c++ overloading reference ambiguity

void outputString(const string &ss) {
    cout << "outputString(const string& ) " + ss << endl;
}

void outputString(const string ss) {
    cout << "outputString(const string ) " + ss << endl;
}

int main(void) {
    //! outputString("ambigiousmethod"); 
    const string constStr = "ambigiousmethod2";
    //! outputString(constStr);
} ///:~
Run Code Online (Sandbox Code Playgroud)

如何进行明确的通话?

编辑:这段代码可以用g ++和MSVC编译.

谢谢.

cod*_*ict 10

C++不允许重载函数,其中函数签名的唯一区别是一个接受一个对象而另一个接受一个对象.所以类似于:

void foo(int);
Run Code Online (Sandbox Code Playgroud)

void foo(int&);
Run Code Online (Sandbox Code Playgroud)

不被允许.

您需要更改参数的数量和/或类型.

在你的情况下接受a的函数reference,你可以让它接受a pointer,如果你想允许函数改变它的参数.