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

C++ 没有参数与调用匹配的匹配函数调用,c++,C++,这是我的构造函数 原型: Chemical_Compound::Chemical_Compound(Element &a) { Elements.push_back(a); } 现在,我尝试在另一个类中使用构造函数,这给了我一些问题 Chemical_Compound(Element & a); 在标题中定义为 Product_b(a); 所以,我真的很困惑为什么我会得到一个错误,因为参数匹配,即使我删除了-,它仍然会给我一个错误,谢谢 我正在

这是我的构造函数

原型:

Chemical_Compound::Chemical_Compound(Element &a)
{
    Elements.push_back(a);
}
现在,我尝试在另一个类中使用构造函数,这给了我一些问题

     Chemical_Compound(Element & a);
在标题中定义为

      Product_b(a);
所以,我真的很困惑为什么我会得到一个错误,因为参数匹配,即使我删除了-,它仍然会给我一个错误,谢谢

我正在使用QT编辑器

       Chemical_Compound Product_b;
       Element a;

构造函数仅在构造时调用

正在发生的是:

 /home/CENCORED/Code/cpp/Chem_Framework/reaction.cpp:23: error: no match for call to '(Chemical_Compound) (Element&)'
 Product_b(a);
            ^
您正在调用编译器生成的默认构造函数,该构造函数不带任何参数

现在当你尝试

Chemical_Compound Product_b;
就像编译器告诉你的那样

这将有助于:

Product_b(a);
首先,这个

Element a;
Chemical_Compound Product_b(a);
不应在标题中

但也应该是

Chemical_Compound Product_b;
Element a;

打印完整的错误消息我想你的意思是:
Element a;化学化合物产品b(a)在头文件中声明对象-->在.cpp文件中使用构造函数初始化对象。你在头文件中创建对象。我认为声明的行为不同于初始化,好吧,我明白我现在做错了什么。那么,您是说,为了获得良好的实践,只应该在标题中声明特定于类的变量吗?或者你能详细说明为什么它不应该出现在标题中吗?你不是在声明它们,而是在创建它们
   Element a;
   Chemical_Compound Product_b(a);