如何选择正确的error()成员函数?我需要以某种方式投射吗?
using namespace std;
struct test
{
int error();
void error(int x);
int fun();
};
int main() {
auto f1 = &test::error; // how to pick the correct function?
auto f2 = &test::fun; // works
}
我需要以某种方式投射吗?
是的,您可以使用static_cast
。
static_cast
也可以通过执行到特定类型的函数到指针的转换来消除函数重载的歧义,例如std::for_each(files.begin(), files.end(), static_cast<std::ostream&(*)(std::ostream&)>(std::flush));
这样你就可以:
auto f1 = static_cast<int(test::*)()>(&test::error);
auto f2 = static_cast<void(test::*)(int)>(&test::error);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句