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);