重载“QString(int)”含糊不清

发布于 11-26 05:09 字数 417 浏览 1 评论 0原文

下面的代码片段给出了编译错误 使用 qt 4.7.3 调用重载的“QString(int)”不明确 (系统是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;
};

有什么提示吗?

The following code fragment gives the compilation error
call of overloaded ‘QString(int)’ is ambiguous with qt 4.7.3
(system is linux 64bit, debian unstable)

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;
};

Any tips?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

恋你朝朝暮暮2024-12-03 05:09:55

相关位是这一行:

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

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

你的意思是这个吗?

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

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

The relevant bit is this line:

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

Since signal is a QString, the signal(0) bit is trying to call a constructor on the QString class that takes an integer as its only parameter. QString has no such constructor according to the Qt documentation. It does however have a constructor taking a char, and a QChar which has an implicit conversion from int. I expect it's ambiguous between those two.

Did you mean this instead?

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

Which will default initialize signal. Note that technically it's not necessary to include it in the initializer list at all in that case.

昨迟人2024-12-03 05:09:55

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

It's a good thing. If it was not ambiguous, you might hit a null-pointer exception on QString::QString(char const* src). This is a common mistake with std::string.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文