#c #qt
#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(" ");
Ответ №1:
Вы передаете строковый литерал ( " "
), который имеет тип const char[2]
(один элемент, содержащий пробел, и другой для завершения
). Вы хотите передать литерал char, записанный в одинарные кавычки: func(' ')
.
QString::remove()
Функция перегружена как для строк, так и для отдельных символов. Даже в этом случае вы хотите передать литерал char ' '
, что более эффективно, чем " "
(последнее подразумевает вызов strlen()
).).
Ответ №2:
Попробуйте написать
void main() {
func(' ');
}
Похоже, компилятор думает, что вы передаете const char*
не a char
из-за двойных кавычек.
И для QChar
from const char*
нет конструктора.
Комментарии:
1. Нет, нет
QChar(const char*)
.2. @mmutz: О, я хотел написать «нет», просто ошибка в написании. Спасибо за исправление.