gpt4 book ai didi

c++ - 是否可以在类的构造期间将静态函数分配给公共(public)成员函数?

转载 作者:行者123 更新时间:2023-11-30 03:19:32 25 4
gpt4 key购买 nike

    CursorMove::CursorMove(char& dir)
{
if(dir == 'd')
{
this->execute = CursorMove::moveRight;
}
else if(dir == 'a')
{
this->execute = CursorMove::moveLeft;
}
else if(dir == 'w')
{
this->execute = CursorMove::moveUp;
}
else if(dir == 's')
{
this->execute = CursorMove::moveDown;
}
}

我目前正在从事一个 CS 项目,我们必须能够使用键盘移动光标。教授希望通过类来完成此操作,因为我们将使用 while 循环来不断检查用户输入,然后只有一个父类将调用其执行。每个独特的执行属于它自己的类。我认为尝试将光标移动命令合并为一个可能会更容易。我的想法是使用名为 moveRight、moveLeft、moveUp 和 moveDown 的公共(public)静态函数,它们都具有与 execute 相同的参数,并在构造期间相应地分配以执行。哪一个由名为“dir”的参数确定。

我当前遇到的错误是“必须调用对非静态成员函数的引用”。我不是解决错误,而是更好奇这是否是一个可行的想法,或者我是否最好忽略它并为每个错误创建一个类。

最佳答案

I am more curious on whether or not this is a feasible idea or if I am better off just ignoring it and just making a class for each one.

总体方案可行。与 C++ 相比,它似乎更像是一种 C 风格的方法,但支持该功能。如何让它工作取决于你的类声明,但你说你对“如何”不感兴趣(但我会注意到“静态”部分影响“如何”,而不是可行性)。

不过,您可能需要考虑一下“为什么”。您所做的基本上是创建一个单成员虚函数表,类似于如果您声明一个名为 execute 的虚函数,然后声明派生类以覆盖该函数,编译器将生成的内容。编译器的版本有一些很好的好处,例如处理 dir 不是预期值之一的情况(可能是通过编译时错误)。您希望通过您的方法获得哪些好处?

关于c++ - 是否可以在类的构造期间将静态函数分配给公共(public)成员函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53604301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com