使用 clang++ 4.1 编译:
class A
{
public:
A(const char *s=0) : _s(s) {}
const char *_s;
};
void f(A a)
{
cout << a._s << endl;
}
int main()
{
f("test");
return 0;
}
印刷,
test
而如果我定义f
如下,
void fA(A &a)
{
cout << a._s << endl;
}
我得到一个编译错误,
clang++ -std=c++11 -stdlib=libc++ -o test test.cpp
test.cpp:14:5: error: no matching function for call to 'f'
f("9000");
^
test.cpp:7:6: note: candidate function not viable: no known conversion from
'const char [5]' to 'A &' for 1st argument;
void f(A &a)
^
为什么?我不明白为什么做f
参考会导致问题。