Ich weiß nicht, wie ich mein Problem beschreiben soll. Ich würde gerne herausfinden, ob es möglich ist, eine Funktion in der Basisklasse zu schreiben, die für abgeleitete Klassen die gleiche wäre, aber verschiedene Parameter übergibt. Vielleicht wäre es einfacher, in meinem Code zu sehen, als es die Beschreibung:Die gleiche Methode in abgeleiteten Klassen, aber mit anderen Parametern
class Employee
{
public:
std::string name, profession;
std::string current_task = "NONE";
int id, age;
// checks if the input by user a new task belongs to duties list
// for the class; if it does then it changes the current task
std::string AssignNewTask(std::vector<std::string> v, std::string input_string)
{
for (unsigned int i = 0; i < v.size(); i++)
{
if (input_string == v[i])
{
return input_string;
}
}
return "NONE";
}
};
class HR : public Employee
{
private:
static std::vector<std::string> tasks; //list of duties for HR employees
public:
HR::HR()
{
Employee::profession = "HR Specialist";
}
//the same function as above but passing tasks (std::vector with duties)
std::string AssignNewTask(tasks, std::string input_string)
};
std::vector<std::string> HR::tasks = { "something" };
int main()
{
HR obj;
// 'something1' does not belong to duties list so still "NONE"
obj.AssignNewTask("something1");
// 'something' belongs so current_task has been changed
obj.AssignNewTask("something");
}
Ich weiß, dass der Code funktioniert nicht. Ich wollte nur zeigen, was ich genau meine.
, was genau in diesem Code funktioniert? – Samer
Ihr Code kann nicht kompiliert werden, weil Sie keine Überladung für 'AssignNewTask' haben, die ein Argument benötigt. – SergeyA
es ist nur ein Teil meines Codes, weil ich nicht wirklich weiß, wie man es schreibt. Der obige Code funktioniert nicht, weil 'obj.AssignNewTask (" something1 ")' zwei Argumente benötigt – mathsicist