func(“”)导致“调用重载的QChar(const char [2])是不明确的

时间:2011-04-28 07:59:11

标签: c++ qt

可以告诉我为什么下面的代码会导致此错误:

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(" ");

2 个答案:

答案 0 :(得分:3)

您传递的是字符串文字(" "),其类型为const char[2](一个元素包含空格,另一个元素用于终止\0)。您想要传递一个字母,用单引号编写:func(' ')

QString::remove()函数为字符串和单个字符重载。即使在这种情况下,您也希望传递一个字面' ',它比" "更有效(后者意味着调用strlen())。

答案 1 :(得分:1)

尝试写

void main() {
  func(' ');
}

似乎编译器认为您因为双引号而传递const char*而不是char。 并且QChar没有const char*的构造函数。