构造函数C++和指向函数参数的指针
Constructor C++ and pointer to function parameter
我对如何在 c++11 中定义一个参数作为函数指针的构造有一些疑问。我创建了收益类,用于管理给定行使价和现货价格的不同类型期权的收益。我还为几种类型的罢工定义了三个函数,具有相同的结构(参数和返回类型(和一个指向函数的指针,目的是管理这些类似的函数。这里是标题:
#ifndef PAYOFFb_H
#define PAYOFFb_H
#include <MinMax.h>
class PayOff
{
public:
typedef double (*pf)(const double& Strike, const double& Spot);
double Call(const double& Strike, const double& Spot){ return max(Spot - Strike, 0.0); };
double Put(const double& Strike, const double& Spot){ return max(Strike - Spot, 0.0); };
double Digital(const double& Strike, const double& Spot){ return Spot > Strike ? 1 : 0; };
PayOff(double Strike_, pf TheOptionsType_) : Strike(Strike_), TheOptionsType(TheOptionsType_){};
double operator()(double Spot) const;
private:
double Strike;
pf TheOptionsType;
};
#endif
和身体:
#include "Payoff1b.h"
#include <MinMax.h>
double PayOff::operator()(double spot) const
{
return (*TheOptionsType)(Strike, spot);
};
使用以下主代码:
int main()
{
double Strike;
cout << "nEnter striken";
cin >> Strike;
PayOff callPayOff(Strike, PayOff::Call);
PayOff putPayOff(Strike, PayOff::Put);
PayOff digitalPayOff(Strike, PayOff::Digital);
return 0;
}
我收到构造函数的此错误:
[...] error C2664: 'PayOff::PayOff(const PayOff &)' : cannot convert argument 1 from 'double' to 'const PayOff &'
我恳请有人可以解释我什么不起作用
不清楚您是尝试使用成员函数指针还是常规函数指针。
它看起来像第二种情况,因为您需要Call
、Put
、Digital
是静态的:
class PayOff
{
public:
typedef double(*pf)(const double& Strike, const double& Spot);
static double Call(const double& Strike, const double& Spot)
{
return max(Spot - Strike, 0.0);
};
static double Put(const double& Strike, const double& Spot)
{
return max(Strike - Spot, 0.0);
};
static double Digital(const double& Strike, const double& Spot)
{
return Spot > Strike ? 1 : 0;
};
PayOff(double Strike_, pf TheOptionsType_) : Strike(Strike_), TheOptionsType(TheOptionsType_) {};
double operator()(double Spot) const;
private:
double Strike;
pf TheOptionsType;
};
相关文章:
- 使用指向成员的指针将成员函数作为参数传递
- 如何使用Visual Studio 2017在C++中为参数化对象数组使用唯一指针
- 修改函数中的指针(将另一个指针作为参数传递)
- Clang bug?使用指针作为模板参数
- MSVC将仅移动结构参数解释为指针
- 非类型指针和引用模板参数,以及在编译时如何/为什么解析它们.c++
- 如何使用非类型模板参数传入指向数组的指针
- 将成员函数指针作为参数传递给模板方法
- 匹配函数指针作为模板参数?
- 当指向对象的指针作为参数传递给 std::thread 时,内存可见性
- 通过智能指针和转换对基本模板参数进行模板推导
- 为函数定义符号不明确的指针参数
- 使用引用与指针将数组作为参数传递
- 如何将成员函数作为回调参数传递给需要"typedef-ed"自由函数指针的函数?
- C++ - 声明指向返回任何类型并获取任意数量参数的函数的指针
- 将函数参数完美转发到函数指针:按值传递呢?
- 保留函数指针模板参数
- 如何构造一个以可变参数指针函数作为成员的类?
- 指向对象的非类型模板参数指针
- c++ 使用 *& as 参数(指针乐趣,三级树方法)