错误:没有匹配的函数调用 [英] error: no matching function for call to

查看:975
本文介绍了错误:没有匹配的函数调用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在我的代码中得到无匹配的函数调用错误。代码是在另一个类的构造函数中创建一个类的实例。

I am getting the "no matching function for call to error" in my code. The code is creating instances of one class in the constructor of another class.

代码如下:

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

这些构造函数实际上是在两个不同的头文件中, 。

These constructors are actually in two different header files, but I included both for completeness.

我得到错误

../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 = ....

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

I know that such an error usually means I've got a wrong data type somewhere, but I can't figure out where it could be?

推荐答案

仔细阅读错误消息的典型案例。

Typical case of "read the error message more carefully".

它告诉你,你试图调用函数与签名 Minerva :: Discriminator :: Discriminator(ushort& Minerva :: DiscriminatorContainer * const)

It's telling you that you are trying to call the function with the signature Minerva::Discriminator::Discriminator(ushort&, Minerva::DiscriminatorContainer* const)

但只存在两个其他构造函数

but there only exists two other constructors

Minerva::Discriminator::Discriminator(const Minerva::Discriminator&)
Minerva::Discriminator::Discriminator(ushort, Minerva::DiscriminatorContainerPtr, double)

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

So just check the call to the constructor. You probably forget one argument.

这篇关于错误:没有匹配的函数调用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆