I have a class Door
that implements a method LockCheck()
, and a class Stove
with a method BurnerCheck()
. I want a class House
that takes as a constructor argument either Door::LockCheck
or Stove::BurnerCheck
along with an unknown set of args for the given function. House
would then store the function and its args such that it can call them at some later time. For example,
auto stove = Stove();
auto stove_check = stove.BurnerCheck;
auto burner_args = std::make_tuple<bool, bool>(true, false);
auto house = House(burner_args, stove_check);
// do some other stuff...
house.check_safety(); // internally calls stove.BurnerCheck(burner_args)
What should class House
"looks" like?
So far I have,
template <typename ReturnType, typename... Args>
class House {
public:
House(Args... args, std::function<ReturnType(Args...)> func)
: input_args_(std::forward_as_tuple(args...)),
safety_func_(func) {}
};
private:
Args... input_args_; // Is this the correct declaration?
std::function<ReturnType(Args...)> safety_func_;
};
Notes:
Aucun commentaire:
Enregistrer un commentaire