没有与匹配调用的参数匹配的函数调用

时间:2015-01-10 18:52:53

标签: c++

Chemical_Compound::Chemical_Compound(Element &a)
{
    Elements.push_back(a);
}

这是我的构造函数

原型:

     Chemical_Compound(Element & a);

现在,我尝试在另一个类中使用构造函数,这给了我一些问题

      Product_b(a);

在标题中定义为

       Chemical_Compound Product_b;
       Element a;

所以,我真的很困惑,为什么我得到一个错误,因为参数匹配,即使我删除&它仍然给我一个错误,谢谢!

我正在使用QT编辑器

 /home/CENCORED/Code/cpp/Chem_Framework/reaction.cpp:23: error: no match for call to '(Chemical_Compound) (Element&)'
 Product_b(a);
            ^

2 个答案:

答案 0 :(得分:1)

构造函数仅在构造时调用。

发生的事情是:

Chemical_Compound Product_b;

您正在调用编译器生成的默认构造函数,该构造函数不带参数。

现在尝试

Product_b(a);

正如编译器告诉你的那样使nosense成为现实。

这样可行:

Element a;
Chemical_Compound Product_b(a);

答案 1 :(得分:1)

首先开始

Chemical_Compound Product_b;
Element a;

不应该在标题中。

但也应该

   Element a;
   Chemical_Compound Product_b(a);