我得到了「我的代碼中沒有匹配函數調用錯誤」。代碼是在另一個類的構造函數中創建一個類的實例。錯誤:沒有匹配函數調用
的代碼如下:
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 = ....
我知道,這樣的錯誤通常意味着我已經有了一個錯誤的數據類型的某個地方的路線,但我想不出它可能在哪裏?
'DiscriminatorContainerPtr'的定義是什麼?你傳遞一個原始指針('this')作爲期望其中之一的構造函數參數。 –
DiscriminatorContainerPtr被定義爲指向DiscriminatorContainer類的指針。它在另一個頭文件中定義... – Mary