|
|
1
8
这里有一个指向成员函数的指针。它会解决你的问题。我很惊讶您的“TestSwitch”函数能够编译,因为调用语法与您可能期望的略有不同。应该是:
但是,您可能会发现boost::function和boost::bind的组合使事情变得更简单,因为您可以避免奇怪的调用语法。
|
|
|
2
3
这也会移除开关,并使清理更有价值。 |
|
|
3
1
您当然可以这样做,尽管CaseMethod调用是不正确的(它是指向成员函数的指针,因此您必须指定应该调用该方法的对象)。正确的调用如下所示:
boost::mem_fn -你把事情搞砸的机会就少了 |
|
|
4
1
我看不出您的调用与在switch语句中简单调用方法之间的区别。 不,没有语义或可读性差异。 我看到的唯一区别是,您使用的是指向方法的指针,因此禁止编译器内联该方法或优化对该方法的任何调用。 |
|
|
5
1
|
|
|
6
0
如果你只是按照你所描述的方式保留简单的指针,那么你就没问题了,但是在更复杂的使用之前,你可能想看看更通用的函子系统,比如 boost::bind |
|
|
7
0
您可以定义一个抽象基类
然后将每个案例作为子类编写,例如
在某个时刻,您将获得指示要执行哪个测试的“num”变量。您可以编写一个接受这个num的工厂函数(我将它称为which_case),并返回一个指向Base的指针,然后从该指针调用方法。
顺便说一下,这个应用程序让我希望C++支持的静态虚拟函数,或者像“类型”之类的内置类型——但它不是。 |
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |