私は自分の問題の記述方法がわかりません。私は、派生クラスでは同じだが、別のパラメータを渡すベースクラスの関数を書くことが可能かどうかを知りたい。おそらく、私のコードでは、それを記述するよりもわかりやすいでしょう:派生クラスでもパラメータは同じで同じメソッド
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");
}
私はコードが動作しないことを知っています。私はちょうど私が正確に意味するものを示したいと思った。
? – Samer
1つの引数を取る 'AssignNewTask'のオーバーロードがないので、コードをコンパイルできません。 – SergeyA
それは私が実際に書く方法を知らないので、それは私のコードの一部です。 'obj.AssignNewTask(" something1 ")'が2つの引数を必要とするので、上記のコードは機能しません – mathsicist