错误:没有匹配的函数调用 [英] error: no matching function for call to
问题描述
我在我的代码中得到无匹配的函数调用错误。代码是在另一个类的构造函数中创建一个类的实例。
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屋!