类的继承和函数重载出现问题(商品入库出库类的程序)no overloaded function takes 5 arguments

我啊找东西 2015-06-02 04:34:06
Material.h //头文件

#ifndef MATERIAL
#define MATERIAL

#include <iostream>
#include <string>
using namespace std;
class Material
{
private:
char *name_m;
string type_m;
int amount_m;
int date_m;
float price_m;


public:
Material(){}; // default constructor

~Material(){}; // noisy destructor

virtual void registermaterials_m(char *n, string t, int a, int d, float p); //登记新商品,此处是函数头
void delete_m();
char *getname_m(); //读取商品名
string gettype_m();
int getamount_m(); //读取商品数量
int getdate_m();
float getprice_m(); //读取商品单价
virtual void outputdetails_m();
};
#endif

——————————————————————————————————
Material.cpp:


#include "Material.h"

void Material::registermaterials_m(char *n, string t, int a, int d, float p)
{
this->name_m = n;
this->type_m = t;
this->amount_m = a;
this->date_m = d;
this->price_m = p;
//this->total_price_m = tp;

}
void Material::outputdetails_m()
{
cout << "Material " << name_m << " Type " << type_m << " Amount " << amount_m << " Date " << date_m << " Price " << price_m << endl;
cout << "total value " << amount_m*price_m << endl;
};

char *Material::getname_m()
{
return this->name_m;
}
string Material::gettype_m()
{
return this->type_m;
}
int Material::getamount_m()
{
return this->amount_m;
}
int Material::getdate_m()
{
return this->date_m;
}
float Material::getprice_m()
{
return this->price_m;
}

___________________________________________________
Copper.h:


#include "Material.h"

class Copper :public Material
{
public:
Copper();
Copper(char *name_m, string type_m,int amount_m, int date_m, float price_m);
virtual void registermaterials_m(char *n, string t, int a, int d, float p);
//void FeedAnimal(Animal *animal, string food, int quantity);
virtual void outputdetails_m();
};

________________________________________________________________

Copper.cpp:

#include "Copper.h"

Copper::Copper() :Material() {};
Copper::Copper(char *n, string t, int a, int d, float p) :Material(*n, t, a, d, p) {}



void Copper::outputdetails_m()
{
Material::outputdetails_m();
}

_____________________________________________________________________

Main.cpp:


#include "Material.h"
#include "Copper.h"
//#include "Steel.h"

int main(int argc, char* argv[])
{

Copper z;
z.registermaterials_m("c102", "Copper", 30, 20150531, 1.5);
z.outputdetails_m();

return 0;
}

_________________________________________________________-

错误提示:error C2661: 'Material::Material' : no overloaded function takes 5 arguments
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========


不知道怎么修改求大神给看看。

void delete_m()这个函数应该怎么写,求教啊。

另外如果在主函数里想要输入商品名,类型,数量,价格等等,然后用数组输出,应该怎么写主函数,求教。

初学者提的问题有点多,请见谅。
...全文
298 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
我啊找东西 2015-06-02
  • 打赏
  • 举报
回复
引用 4 楼 Automation_dmu 的回复:
无视2楼, 不要用.运算符调用registermaterials_m , 用->去调用
不太懂,不好意思,请问怎么调用。
AndyStevens 2015-06-02
  • 打赏
  • 举报
回复
无视2楼, 不要用.运算符调用registermaterials_m , 用->去调用
我啊找东西 2015-06-02
  • 打赏
  • 举报
回复
引用 1 楼 weixin_28674885 的回复:
问题在于你的第二个构造函数,有五个参数,但是基类没有类似的构造函数
不太懂,求指点如何改?
AndyStevens 2015-06-02
  • 打赏
  • 举报
回复
void Material::registermaterials_m(char *n, string t, int a, int d, float p):Material()
{
    this->name_m = n;
    this->type_m = t;
    this->amount_m = a;
    this->date_m = d;
    this->price_m = p;
    //this->total_price_m = tp;
 
}
weixin_28674885 2015-06-02
  • 打赏
  • 举报
回复
问题在于你的第二个构造函数,有五个参数,但是基类没有类似的构造函数

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧