![]() |
1
2
你所问的与前面的一个问题类似,我在这里给出的答案也与此相关。
在你的情况下
目标
上面列表中的第三个参数是
因此,你需要帮助它。您可以像现在这样对方法指针进行类型转换,也可以在调用函数时显式指定模板参数类型:
|
![]() |
2
2
虽然这是可能的,并且应该被任何正常运行的编译器所接受,但我不能说我真的会建议它——虽然它在一个语句中创建并初始化指针,但是如果所涉及的类型有一个长名称,它可能会以几行代码的形式结束,这仅仅是因为它的长度。
我相信C++ 0x的,
|
![]() |
3
1
您可以避免使用typedef,但它实际上并不漂亮:
最好坚持使用typedef。 |
![]() |
4
0
你似乎误解了问题的根源。只要编译器知道赋值/初始化接收端的具体类型,如果typedef定义为
然后是初始化
调用重载解析并选择函数的正确重载版本,而无需显式强制转换。这实际上只是C++中的一个地方,当表达式/初始化的右侧的过载分辨率取决于左侧。 当然,在没有typedef的情况下也应该可以这样做。 好的,请注意,您实际要做的是将方法的地址作为依赖参数类型传递给模板函数:当然,在这种情况下,您必须1)通过使用强制转换选择适当的重载,或者2)通过显式指定模板参数来修复函数参数类型。
然后通过
|
![]() |
Willy · LINQ:将分组列表转换为新列表 7 年前 |
![]() |
Kapil · 如何使用参数设置脚本任务SSI的路径 7 年前 |
![]() |
c00000fd · 跨命名空间和不同的.H文件的友元类 7 年前 |
![]() |
tangoal · 调用模板类成员时非法使用此类型作为表达式 7 年前 |