Вызов func ("" вызывает "перегруженного QChar (const char [2]) неоднозначен - PullRequest
1 голос
/ 28 апреля 2011

Подскажите, почему код ниже вызывает эту ошибку:

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 ]

3 голосов
/ 28 апреля 2011

Вы передаете строковый литерал (" "), который имеет тип const char[2] (один элемент содержит пробел, а другой - для завершающего \0).Вы хотите передать символьный литерал, написанный в одинарных кавычках: func(' ').

Функция QString::remove() перегружена как для строк, так и для одиночных символов.Даже в этом случае вы хотите передать символьный литерал ' ', который более эффективен, чем " " (последний подразумевает вызов strlen()).

1 голос
/ 28 апреля 2011

Попробуйте написать

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

Похоже, компилятор считает, что вы передаете const char*, а не char из-за двойных кавычек. И нет никакого конструктора для QChar из const char*.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...