错误:<script>
MonthYear.innerText = "25/3";
</script>
所以我正在编写一个命令行界面 (cli),并且有一个可以通过 cli 访问的命令列表(向量)。它是这样实现的:
no suitable constructor exists to convert from "void (Args args)" to "std::function<void (Args)>"
对于上下文,这是代码的相关部分。
标题:
using Args = std::vector<std::string>;
using Func = std::function<void(Args)>;
using Command = std::tuple<std::string, std::string, Func>;
std::vector<Command> commands;
来源:
using Args = std::vector<std::string>;
using Func = std::function<void(Args)>;
using Command = std::tuple<std::string, std::string, Func>;
class Cli{
public:
Cli();
void add_to_commands(std::string, std::string, Func);
private:
std::vector<Command> commands;
void exit_program(Args args);
void help(Args args);
};
错误 (Cli::Cli(){
add_to_commands("exit", "Exit Program", Cli::exit_program);
add_to_commands("help, h", "Help Screen", Cli::help);
}
void Cli::add_to_commands(std::string names, std::string desc, Func func) {
Command cmd = std::make_tuple(names, desc, func);
commands.push_back(cmd);
}
) 在构造函数中,我尝试在其中传递函数。
由于 c++ 无法转换它,我认为基本思想有问题。最好更改 no suitable constructor exists to convert from "void (Args args)" to "std::function<void (Args)>"
的实现,因此可以像我在构造函数中尝试的那样使用方法 Func
。