首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误:没有匹配的函数用于调用

错误:没有匹配的函数用于调用
EN

Stack Overflow用户
提问于 2011-07-13 00:03:51
回答 2查看 27.1K关注 0票数 2

在我的代码中,我得到了“没有匹配的函数来调用错误”。代码在一个类的构造函数中创建另一个类的实例。

代码如下:

代码语言:javascript
复制
inline DiscriminatorContainer::DiscriminatorContainer(ushort id, FebPtr feb):
 m_id(id), m_feb(feb), m_discriminators(new Discriminators())   {
    //make discriminators
    for (ushort i = 0; i <kNDiscriminators; ++i){
        DiscriminatorPtr dsc = DiscriminatorPtr(new Discriminator(i, this));
        m_discriminators->push_back(dsc);

    }
}

inline Discriminator::Discriminator(ushort id, DiscriminatorContainerPtr dc, double threshold) :
    m_id(id), m_threshold(threshold),
    m_nhits(0), m_dc(dc) 
  {
    init();
  }

这两个构造器实际上位于两个不同的头文件中,但为了完整起见,我包含了这两个头文件。

我得到了错误

代码语言:javascript
复制
../src/DiscriminatorContainer.h:50: error: no matching function for call to `Minerva::Discriminator::Discriminator(ushort&, Minerva::DiscriminatorContainer* const)'
../src/Discriminator.h:24: note: candidates are: Minerva::Discriminator::Discriminator(const Minerva::Discriminator&)
../src/Discriminator.h:61: note:                 Minerva::Discriminator::Discriminator(ushort, Minerva::DiscriminatorContainerPtr, double)

关于DiscriminatorPtr dsc = ....的那一行

我知道这样的错误通常意味着我在某个地方得到了错误的数据类型,但我不知道它可能在哪里?

EN

回答 2

Stack Overflow用户

发布于 2011-07-13 00:10:44

“更仔细地阅读错误信息”的典型案例。

它告诉您,您正在尝试调用具有签名Minerva::Discriminator::Discriminator(ushort&, Minerva::DiscriminatorContainer* const)的函数

但是只存在另外两个构造函数

代码语言:javascript
复制
Minerva::Discriminator::Discriminator(const Minerva::Discriminator&)
Minerva::Discriminator::Discriminator(ushort, Minerva::DiscriminatorContainerPtr, double)

所以只需检查对构造函数的调用。您可能忘记了一个参数。

票数 6
EN

Stack Overflow用户

发布于 2011-07-13 00:08:07

new Discriminator(i, this)与任何构造函数都不匹配。

编辑

嗯,inlining doesn't affect default arguments,所以你一定是在别的地方搞错了!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6667342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档