代码不编译。我不明白错误是什么,请帮忙)
#include <iostream>
#include <fstream>
class Record{
std::string product_name;
std::string product_category;
int price;
int amount;
public:
Record(std::string newName, std::string newCategory, int newPrice, int newAmount){
product_name=newName;
product_category=newCategory;
price=newPrice;
amount=newAmount;
}
std::string getName(){
return product_name;
}
std::string getCategory(){
return product_category;
}
int getPrice(){
return price;
}
int getAmount(){
return amount;
}
void setName(std::string newName){
product_name=newName;
}
void setCategory(std::string newCategory){
product_category=newCategory;
}
void setPrice(int newPrice){
price=newPrice;
}
void setAmount(int newAmount){
amount=newAmount;
}
};
int main(){
Record r1;
r1.setName("beer");
r1.setCategory("alcohol");
r1.setPrice(12);
r1.setAmount(32);
Record r2("carrot", "vegetables", 123, 1932);
std::cout<<r1.getName()<<" "<<r1.getCategory()<<" "<<r1.getPrice()<<" "<<r1.getAmount()<< std::endl;
std::cout<<r2.getName()<<" "<<r2.getCategory()<<" "<<r2.getPrice()<<" "<<r2.getAmount()<< std::endl;
Record r3[2];
std::string a;
float b;
unsigned int c;
for(unsigned int i=0; i<2; ++i){
std::cout<<"input name: ";
std::cin>>a;
r3[i].setName(a);
std::cout<<"input category: ";
std::cin>>a;
r3[i].setCategory(a);
std::cout<<"input price: ";
std::cin>>b;
r3[i].setPrice(b);
std::cout<<"input amount: ";
std::cin>>c;
r3[i].setAmount(c);
}
for(unsigned int i=0; i<2; ++i){
std::cout<<r3[i].getName()<<" "<<r3[i].getCategory()<<" "<<r3[i].getPrice()<<" "<<r3[i].getAmount()<< std::endl;
}
return 0;
}
错误文本:g-Wall-c“main.cpp”(/media/ad/4GB-NTFS/prog/laba2)main。cpp:In函数“int main()”:main。cpp:46:12:错误:调用“Record::Record()”记录r1;^主要的cpp:12:1:注意:候选者:Record::Record(std::\u cxx11::string,std::\u cxx11::string,int,int)Record(std::string newName,std::string newCategory,int newPrice,int newAmount){^main。cpp:12:1:注意:候选者需要4个参数,0个提供的main。cpp:6:7:注意:候选者:Record::Record(const Record
主要的cpp:46:12:错误:调用“Record::Record()”时没有匹配的函数
也就是说,在这一点上:
Record r1;
您正在尝试使用默认构造函数(Record::Record)实例化对象r1。实际上,您没有提供任何参数。
此外,编译器继续:
注意:候选人需要4个参数,提供0个
在您的类接口之后,实例化
Record
对象的唯一方法是使用提供的唯一构造函数,即:
Record(std::string, std::string, int, int);
如果您想允许使用默认构造函数实例化
记录
对象,则必须提供它。
C 11允许您编写:
Record() = default;
以定义默认构造函数。
您已经覆盖了类的构造函数,因此没有一个接受零参数,因为这需要:
Record r1;
定义默认构造函数:
Record() {}
您的类没有默认构造函数。所以当你说:
Record r1;
编译器不知道如何创建r1对象。创建时,您需要提供所有参数:
Record r1( "foo", "bar", 1, 2 );
或者最好彻底重新考虑程序的设计。
我编译了以下C代码: 使用命令 .下面是输出中的 Bar 函数: 我有几个关于这个汇编代码的问题: > 如果函数体中既没有使用也没有使用rsp,那么"",""和""的目的是什么? 为什么和自动包含C函数的参数(分别为和)而不从堆栈中读取它们? 我尝试将Foo的大小增加到88字节(11s),指令变成了。将我的结构设计为“圆形”大小以避免乘法指令(以优化数组访问)是否有意义?指令被替换为:
本文向大家介绍C#计算器编写代码,包括了C#计算器编写代码的使用技巧和注意事项,需要的朋友参考一下 利用C#编写一个计算器。如下图,能够完成基本的四则运算。 当然这个程序甚至还不上Windows附件那个自带的多功能计算器。 不过这个程序的逻辑还是非常值得思考的,首先你要考虑好用户按+ - * / =等运算符号、数字键之后计算器的状态记录问题。 然后要防止多次按某一个键的问题。比如小数点.就不应
问题内容: 当我尝试通过发出命令“ g ++ qr.cpp -o qr”来编译此文件时,系统挂起。我在其他任何地方都没有看到这种错误。 我的编译器版本信息如下。 问题答案: 你知道这些有多大吗? 每个至少1GB !!!您将要动态分配它们…
我正在尝试编译这里提到的桥接模式C示例代码 但是,当我使用g-o桥时,我会遇到编译错误。C 计划: 错误: ]#g-o桥桥。C桥。C: 在成员函数“virtual void TimeImp::tell()”中:Bridge。C: 14:错误:“运算符”不匹配 这是错误的一部分,它以相同的模式扩展。 我复制粘贴了相同的代码,分析了错误行,但无法得到它。 有人能告诉我我哪里错了吗?
我经常遇到这种情况。乍一看,我认为,“这是糟糕的编码;我正在执行一个方法两次,必然会得到相同的结果。”但想到这里,我不得不怀疑编译器是否像我一样聪明,并能得出相同的结论。 编译器的行为是否取决于 方法的内容?假设它看起来像这样(有点类似于我现在的真实代码): 除非对这些对象来自的任何存储进行处理不当的异步更改,否则如果连续运行两次,肯定会返回相同的内容。但是,如果它看起来像这样(为了论证而无意义的