繁体   English   中英

在C ++入门中使用auto或decltype作为函数指针类型

[英]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返回指向sumLengthlargerLength的指针”。 我怎么知道指针函数返回指向sumLengthlargerLength点?

这篇文章说你可以定义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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM