在我的代码中,我得到了“没有匹配的函数来调用错误”。代码在一个类的构造函数中创建另一个类的实例。
代码如下:
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();
}这两个构造器实际上位于两个不同的头文件中,但为了完整起见,我包含了这两个头文件。
我得到了错误
../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 = ....的那一行
我知道这样的错误通常意味着我在某个地方得到了错误的数据类型,但我不知道它可能在哪里?
发布于 2011-07-13 00:10:44
“更仔细地阅读错误信息”的典型案例。
它告诉您,您正在尝试调用具有签名Minerva::Discriminator::Discriminator(ushort&, Minerva::DiscriminatorContainer* const)的函数
但是只存在另外两个构造函数
Minerva::Discriminator::Discriminator(const Minerva::Discriminator&)
Minerva::Discriminator::Discriminator(ushort, Minerva::DiscriminatorContainerPtr, double)所以只需检查对构造函数的调用。您可能忘记了一个参数。
发布于 2011-07-13 00:08:07
new Discriminator(i, this)与任何构造函数都不匹配。
编辑
嗯,inlining doesn't affect default arguments,所以你一定是在别的地方搞错了!
https://stackoverflow.com/questions/6667342
复制相似问题