在构造类之外定义函数实例
Posted
技术标签:
【中文标题】在构造类之外定义函数实例【英文标题】:Define function instance outside constructed class 【发布时间】:2021-01-04 16:33:59 【问题描述】:我正在使用 Arduino IDE,并且正在尝试制作可执行命令。我有一个名为 command 的类:
class Command
Command();
public:
void eval();
private:
;
Command::Command()
我想做这样的事情:
class Command // Create the command class
Command();
public:
void eval();
private:
;
Command::Command() // Constructor
Command commandOne(); // Construct an instance of the class
void commandOne.eval() = () => // Change eval function in class
【问题讨论】:
【参考方案1】:您可以将std::function
保留为您班级的私人成员,并提供一个设置器来更改它。然后实现你的eval
来调用这个函数。最小的例子:
class Command
public:
// note that constructor must be public
Command(): _f()
void eval()
if (_f)
_f();
void setEval(std::function<void()> f)
_f = f;
private:
std::function<void()> _f;
;
int main()
Command cmd;
cmd.eval();
cmd.setEval([]() std::cout << "Hello!" << std::endl; );
cmd.eval();
return 0;
如果你不想要setter并且在构造Command
对象之前知道你的函数体,你可以删除默认构造函数,移除setter函数,然后实现Command::Command(std::function<void()> f): _f(f)
。
【讨论】:
以上是关于在构造类之外定义函数实例的主要内容,如果未能解决你的问题,请参考以下文章