我的类有一组具有完全相同签名的成员函数。
我需要显式声明这些成员方法的命名类型,以便定义可以用其中一个方法分配的变量/参数。
这样地:
class Point_t { private: int X; int Y; public: int getX(); int getY(); }; // This is only to define a variable, not a type name int (Point_t::*var_name)() = &Point_t::getX;
但这只是定义一个变量,而不是声明一个类型名。
此外,这是C风格,我认为它在我的C++代码中非常难看。
有没有现代的C++风格?
我希望它看起来像:
using method_type = Point_t::*;
谢谢
最简单的方法是使用 decltype specifier 哪一个
decltype
检查实体的声明类型或表达式的类型和值类别。
在您的情况下,它将是:
using method_type = decltype(&Point_t::getX);
如果你想避免 下降型 (例如,因为它需要指定退出方法),您也可以在没有它的情况下执行以下操作:
下降型
using method_type = int (Point_t::*)();
或者如果你需要这种方法 const :
const
using method_type = int (Point_t::*)() const;