重载的"QString(int)"不明确

overloaded ‘QString(int)’ is ambiguous

本文关键字:quot 不明确 int 重载 QString      更新时间:2023-10-16

下面的代码片段给出了编译错误带qt的call of overloaded ‘QString(int)’ is ambiguous 4.7.3(系统为linux 64位,debian不稳定(

struct QSAConnection
{
  QSAConnection() : sender(0), signal(0), function_ref() { }
  QSAConnection(QObject *send, const char *sig, QSObject ref)
    : sender(send), signal(QLatin1String(sig)), function_ref(ref) { }
  QObject *sender;
  QString signal;
  QSObject function_ref;
};

有什么建议吗?

相关位为此行:

QSAConnection() : sender(0), signal(0), function_ref() { }

由于signalQStringsignal(0)位试图调用QString类上的构造函数,该构造函数将整数作为其唯一参数。根据Qt文档,QString没有这样的构造函数。然而,它确实有一个采用char的构造函数,以及一个从int进行隐式转换的QChar。我想这两者之间是模棱两可的。

你是这个意思吗?

QSAConnection() : sender(0), signal(), function_ref() { }

它将默认初始化signal。请注意,从技术上讲,在这种情况下根本没有必要将其包含在初始值设定项列表中。

这是一件好事。如果没有歧义,您可能会在QString::QString(char const* src)上遇到一个空指针异常。这是std::string常见的错误。