可以告诉我为什么下面的代码会导致此错误:
call of overloaded 'QChar(const char[2])' is ambiguous
和代码:
void func(QChar a) {
qDebug() << a;
}
void main() {
func(" ");
}
当String.remove(QChar,Qt::CaseSensitive)
有效时:a.remove(" ");
答案 0 :(得分:3)
您传递的是字符串文字(" "
),其类型为const char[2]
(一个元素包含空格,另一个元素用于终止\0
)。您想要传递一个字母,用单引号编写:func(' ')
。
QString::remove()
函数为字符串和单个字符重载。即使在这种情况下,您也希望传递一个字面' '
,它比" "
更有效(后者意味着调用strlen()
)。
答案 1 :(得分:1)
尝试写
void main() {
func(' ');
}
似乎编译器认为您因为双引号而传递const char*
而不是char
。
并且QChar
没有const char*
的构造函数。