我的c ++代码需要帮助。 我需要在这段代码中为Posao类创建构造函数和对象。但是当我创建构造函数时,它会向我显示错误。
#include<iostream>
#include<string>
using namespace std;
class Radnik
{
private:
string ime;
string prezime;
int koeficijentSS;
bool zaposlen;
public:
Radnik(string, string, int, bool);
string getIme();
string getPrezime();
int getKoeficijent();
bool getStatus();
void promeniIme(string);
void promeniPrezime(string);
void promeniKoeficijent(int);
void promeniStatus(bool);
};
class Posao: public Radnik
{
private:
Radnik radnik1;
Radnik radnik2;
public:
void PromeniRadnik1(Radnik);
void PromeniRadnik2(Radnik);
};
Radnik::Radnik(string a, string b, int c, bool d)
{
ime = a;
prezime = b;
koeficijentSS = c;
zaposlen = d;
}
string Radnik::getIme()
{
return ime;
}
string Radnik::getPrezime()
{
return prezime;
}
int Radnik::getKoeficijent()
{
return koeficijentSS;
}
bool Radnik::getStatus()
{
return zaposlen;
}
void Radnik::promeniIme(string e)
{
ime = e;
}
void Radnik::promeniPrezime(string f)
{
prezime = f;
}
void Radnik::promeniKoeficijent(int g)
{
koeficijentSS = g;
}
void Radnik::promeniStatus(bool h)
{
zaposlen = h;
}
void Posao::PromeniRadnik1(Radnik x)
{
radnik1.promeniIme(x.getIme());
radnik1.promeniPrezime(x.getPrezime());
radnik1.promeniKoeficijent(x.getKoeficijent());
radnik1.promeniStatus(x.getStatus());
}
void Posao::PromeniRadnik2(Radnik y)
{
radnik2.promeniIme(y.getIme());
radnik2.promeniPrezime(y.getPrezime());
radnik2.promeniKoeficijent(y.getKoeficijent());
radnik2.promeniStatus(y.getStatus());
}
int main()
{
Radnik radnikPrvi("djuro", "djuric", false, 3);
Radnik radnikDrugi("momcilo", "sportista", true, 2);
Radnik radnikTreci("gavrilo", "burek", false, 1);
return 0;
}
你能写信给我如何使用Posao类的参数和对象构建构造函数。
我需要这个用于学校项目。希望你能找到解决问题的方法。感谢
提前致谢, 黑爵士
答案 0 :(得分:3)
当Posao从Radnik继承时,Posao的构造函数将调用Radnik的构造函数。 正如user4581301所说,Radnik没有默认构造函数,这是编译器可以为您调用的唯一构造函数,因此您必须使用Initializer list明确地调用它。
但是,你真的希望Posao从Radnik继承吗?似乎你想让Posao使用Radnik,但不要成为Radnik的子类...
答案 1 :(得分:1)
你能写信给我如何使用参数和对象制作构造函数 对于Posao班。
首先,您需要类Radnik
中的默认构造函数,当您将参数传递给类Posao
的构造函数时,这将构成一个默认构造函数。
这可以通过简单地完成
Radnik() = default;
带参数的类Posao
的构造方法将如下所示。
Posao(std::string a1, std::string b1, int c1, bool d1,
std::string a2, std::string b2, int c2, bool d2)
:radnik1(a1, b1, c1, d1),
radnik2(a2, b2, c2, d2)
{}
对象为Posao
的类Radnik
的构造方法将如下所示。
Posao(Radnik r1, Radnik r2)
:radnik1(r1), radnik2(r2)
{}
在main()
中同时拥有两者后,您可以创建类Posao
的实例,如下所示:
int main()
{
//carefull while passing para:
// Radnik(string a, string b, int c, bool d)
Radnik radnikPrvi("djuro", "djuric", 3, false);
Radnik radnikDrugi("momcilo", "sportista", 2, true );
// constructor with parameters
Posao obj_parameters("ime1", "prezime1", 1, true,
"ime2", "prezime2", 2, false);
// constructor with Radnik objects object
Posao obj_objets(radnikPrvi, radnikDrugi);
return 0;
}
在构造函数中使用initializer list始终是一种好习惯,而不是创建和分配。那么你还必须小心初始化列表需要你在私有中声明的顺序中的参数。
在main()
中,您错放了bool
和int
个参数。
||||| |
Radnik radnikPrvi("djuro", "djuric", false, 3);
Radnik radnikDrugi("momcilo", "sportista", true, 2);
Radnik radnikTreci("gavrilo", "burek", false, 1);