函数,创建其他函数c ++

时间:2018-11-23 12:53:07

标签: c++ task function-pointers

我有一个创建函数Factory(const std :: string name)的任务,该函数将返回指向没有打印名称的参数的函数的指针。另外,我应该只使用本地语言方法(没有lambda函数等)。你能举个例子吗?

2 个答案:

答案 0 :(得分:1)

代码中的注释。我故意没有将其直接打印到std :: cout,而是将返回字符串。根据需要对其进行调整。

#include <iostream>

struct bork {              // the object to hold the text to return
    std::string text;      // the text to return

    // constructor
    bork(const std::string& in) : text(in) {}

    // the operator that makes the object behave like a function    
    std::string operator ()(void) const { return text; }

    // a factory method to create a "bork"
    static bork make_bork(const std::string& text) {
        return bork(text);
    }

};

int main() {
    auto a = bork::make_bork("howdy");
    auto b = bork::make_bork("world");

    std::cout << a() << "\n";
    std::cout << b() << "\n";
}

答案 1 :(得分:-1)

您不能在函数中创建函数。唯一的方法是知道所有出现的字符串,并对每个可能的字符串都有一个函数,然后选择并返回适当的函数。否则,您可以使用对象:-)