首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C++中的抽象函数式

C++中的抽象函数式
EN

Stack Overflow用户
提问于 2012-07-06 04:15:38
回答 5查看 1K关注 0票数 3

我想写一个抽象的基类

代码语言:javascript
运行
复制
class func_double_double_t : public unary_function<double, double>
{
    virtual double operator()(double x) = 0;
};

并将其专用于几种不同的类型

代码语言:javascript
运行
复制
class func_pow_t : public func_double_double_t
{
 public:
    func_pow_t(double exponent) : exponent_(exponent) {};
    virtual double operator()(double x) { return pow(x, exponent_); };
}

class func_exp_t : public func_double_double_t
...

并在必要时将这些内容传递给函数:

代码语言:javascript
运行
复制
double make_some_calculation(double num, func_double_double_t f)
{
     return f(x);
}

但是我不能定义func_double_double_t类型的对象,因为它是抽象的。我可以传递一个指向函数的指针,但是使用像f->operator()(num)这样的f似乎从一开始就违背了操作符重载的精神。((*f)(num)更好,但仍然如此。)

有没有办法让操作符重载和这样的抽象很好地结合在一起?

EN

Stack Overflow用户

发布于 2012-07-06 04:22:31

尽管您可以通过将函数作为引用传递来实现此目的,但C++11标准内置了这些函数器类型:

代码语言:javascript
运行
复制
double make_some_calculation(double d, std::function< double(double) > f) {
   return f(d);
}


...
auto add_2=std::bind( std::plus(), 2.0 );
double result=make_some_calculation(1.1, add_2);
票数 1
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11351928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档