[英]Using auto or decltype for Function Pointer Types in C++ primer
C ++ primer,6.7指向函数的指针使用auto或decltype作为函数指针类型
如果我们知道要返回哪个函数,我们可以使用decltype来简化函数指针返回类型的编写。 例如,假设我们有两个函数,它们都返回一个字符串:: size_type并且有两个const字符串和参数。 我们可以编写第三个函数,它接受一个字符串参数并返回指向这两个函数之一的指针,如下所示:
string::size_type sumLength(const string&, const string&);
string::size_type largerLength(const string&, const string&);
// depending on the value of its string parameter,
// getFcn returns a pointer to sumLength or to largerLength
decltype(sumLength) *getFcn(const string &);
我不明白“取决于其字符串参数的值, getFcn
返回指向sumLength
或largerLength
的指针”。 我怎么知道指针函数返回指向sumLength
或largerLength
点?
这篇文章说你可以定义getFcn
typedef decltype(sumLength) func_type;
func_type* getFcn(const string& s)
{
if (s.size() < 1000) // magic number
return sumLength;
else
return largerLength;
}
你可以称之为
string str1, str2;
// calls either sumLength or largerLength with str1, str2
// depending on str1's size
auto i = getFcn(str1)(str1, str2);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.