【发布时间】:2019-01-23 20:18:56
【问题描述】:
今天我发现了一件疯狂的事情。它可以在多个平台(Windows、macOS、Android)下重现。
我使用 Qt,并且有以下“有问题的”类:
class AbstractUiDownloadInfo :
public QObject
{
Q_OBJECT
public:
explicit AbstractUiDownloadInfo(
const QSharedPointer<const AbstractDownloadPersistentInfo> &info,
const QSharedPointer<const AbstractDownloadRunTimeInfo> &info2,
QObject *parent = nullptr);
explicit AbstractUiDownloadInfo(
const QSharedPointer<const AbstractDownloadPersistentInfo> &info,
QObject *parent = nullptr);
explicit AbstractUiDownloadInfo(
const QSharedPointer<const AbstractDownloadRunTimeInfo> &info2,
QObject *parent = nullptr);
我也有这个结构:
struct AbstractNewDownloadRequest
{
QVector<QSharedPointer<AbstractDownloadPersistentInfo>> infos;
};
所以,我正在尝试使用它:
// somewhere before
AbstractNewDownloadRequest m_request;
// then:
auto info = m_request.infos[index];
return new AbstractUiDownloadInfo(info);
给我以下错误:
..\..\fdm-qml\common\abstractui\abstractuinewdownloadrequest.cpp(30): error C2668: 'AbstractUiDownloadInfo::AbstractUiDownloadInfo': ambiguous call to overloaded function
c:\work\source\fdm-qml\common\abstractui\abstractuidownloadinfo.h(42): note: could be 'AbstractUiDownloadInfo::AbstractUiDownloadInfo(const AbstractUiDownloadInfo &)'
c:\work\source\fdm-qml\common\abstractui\abstractuidownloadinfo.h(24): note: or 'AbstractUiDownloadInfo::AbstractUiDownloadInfo(const QSharedPointer<const AbstractDownloadRunTimeInfo> &,QObject *)'
c:\work\source\fdm-qml\common\abstractui\abstractuidownloadinfo.h(21): note: or 'AbstractUiDownloadInfo::AbstractUiDownloadInfo(const QSharedPointer<const AbstractDownloadPersistentInfo> &,QObject *)'
..\..\fdm-qml\common\abstractui\abstractuinewdownloadrequest.cpp(30): note: while trying to match the argument list '(QSharedPointer<AbstractDownloadPersistentInfo>)'
但是下面的代码可以正常工作:
QSharedPointer<const AbstractDownloadPersistentInfo> info =
m_request.infos[index];
return new AbstractUiDownloadInfo(info);
发生了什么事?
添加 #1。
StackOverflow 不允许我再在这里发布代码,所以我发布屏幕截图。
【问题讨论】:
-
嗯......我认为模棱两可!=不知道......
-
它怎么能为我的参数类型调用 AbstractUiDownloadInfo::AbstractUiDownloadInfo(const AbstractUiDownloadInfo &) 构造函数??
-
“StackOverflow 不允许我再在这里发布代码” - 现在这很不寻常……如果您将代码作为文本发布会发生什么?
-
@VTT 他可能打了这个:meta.stackoverflow.com/questions/310791/…
-
这个问题真的需要一个更清晰的标题。