我的 C++ 代码有问题。
我有三个类:Osoba
(=Person)、Produkt
(=Product) 和 Faktura
(=invoice)
Osoba.h
class Osoba
{
public:
Osoba(int vek, string jmeno);
~Osoba();
int vek;
string jmeno;
};
大麦.cpp
Osoba::Osoba(int vek, string jmeno)
{
this->vek = vek;
this->jmeno = jmeno;
}
Osoba::~Osoba()
{
}
产品.h
class Produkt
{
public:
Produkt(int id, string jmeno, double cena);
~Produkt();
string jmeno;
double cena;
private:
int id;
};
产品.cpp
Produkt::Produkt(int id, string jmeno, double cena)
{
this->id = id;
this->jmeno = jmeno;
this->cena = cena;
}
Produkt::~Produkt()
{
}
Faktura.h
class Faktura
{
public:
Faktura(int id, Osoba * osoba, vector<Produkt> produkty);
~Faktura();
int CelkovaCena();
Osoba * osoba;
vector<Produkt> produkty;
private:
int id;
};
Faktura.cpp
Faktura::Faktura(int id, Osoba * osoba, vector<Produkt> produkty)
{
cout << "konstruktor Faktura" << endl;
this->id = id;
this->osoba = osoba;
this->produkty = produkty;
}
Faktura::~Faktura()
{
cout << "destruktor Faktura" << endl;
}
int Faktura::CelkovaCena()
{
int suma = 0;
for (int i = 0; i < produkty.size(); i++)
{
suma+=produkty[i].cena;
}
return suma;
}
主要.cpp
int main()
{
Produkt * p1 = new Produkt(1, "Konvice", 450.0);
Produkt * p2 = new Produkt(2, "Autolekarnicka", 150.0);
Osoba * o1 = new Osoba(18,"Jakub");
Faktura * f1 = new Faktura(1,*o1,p1); //error
delete p1;
delete p2;
delete o1;
//delete f1;
return 0;
}
问题是我不知道如何在 main.cpp 中使用 Faktura 创建"new"。它给我一个错误:没有构造函数的实例 "Faktura::Faktura"与参数列表匹配。
你能帮帮我吗?
最佳答案
你必须匹配方法参数类型:
Faktura::Faktura(int id, Osoba * osoba, std::vector<Produkt> produkty)
调用必须如下所示:
Faktura * f1 = new Faktura(1, o1, p); //error
注意:o1
已经是一个指针。 p
必须是 vector 。
所以:
int main()
{
Produkt * p1 = new Produkt(1, "Konvice", 450.0);
Produkt * p2 = new Produkt(2, "Autolekarnicka", 150.0);
std::vector<Produkt> p;
p.push_back(*p1);
p.push_back(*p2);
Osoba * o1 = new Osoba(18,"Jakub");
Faktura * f1 = new Faktura(1, o1, p);
cout << "Celkova cena = " << f1->CelkovaCena() << endl;
delete p1;
delete p2;
delete o1;
delete f1;
return 0;
}
输出:
konstruktor Faktura
Celkova cena = 600
destruktor Faktura
关于c++ - 错误 : No instance of constructor "Faktura::Faktura" matches the argument list,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49600421/