C++ 如何使用Inheritant类将参数传递给基类?
当我编译代码时,它返回0作为结果 我怀疑我的类声明没有将参数传递给基类,但是我不理解没有发生这种情况的原因 我正在努力研究如何定义基类和内在类,并通过它们之间的传递值将它们连接起来 我试图解决的问题是: 在到期日,持卡人掷n次常规骰子。结果由以下公式定义:max[(S-X);0]表示DivedInvaritiveCall,max[(X-S);0]表示DivedInvaritivePut,其中X是执行价格,S是n个结果的总和,四舍五入到最近的偶数。这两个类都在基类之后继承。一个例子 下面提供了main()函数中这些类的实现C++ 如何使用Inheritant类将参数传递给基类?,c++,C++,当我编译代码时,它返回0作为结果 我怀疑我的类声明没有将参数传递给基类,但是我不理解没有发生这种情况的原因 我正在努力研究如何定义基类和内在类,并通过它们之间的传递值将它们连接起来 我试图解决的问题是: 在到期日,持卡人掷n次常规骰子。结果由以下公式定义:max[(S-X);0]表示DivedInvaritiveCall,max[(X-S);0]表示DivedInvaritivePut,其中X是执行价格,S是n个结果的总和,四舍五入到最近的偶数。这两个类都在基类之后继承。一个例子 下面提供了ma
class DiceDerivative{
double expiry;
double nThrow;
int k;
double rf;
string type;
int nSim;
public:
double rollDie(int turns){
int roll;
int i;
int min = 1; // the min number a die can roll is 1
int max = 6;// this->dieSize; // the max value is the die size
int sum = 0;
for(i = 0; i < turns; i++){
roll = rand() % (max - min + 1) + min;
sum+= roll;
}
return (sum % 2 == 0) ? sum: (sum -1);
}; // Attribute (int variable)
double price(int nSim) {
int payoff = 0;
double sum = 0;
int i;
for (i=0; i<nSim; i++) {
if (type == "Call") {
//specify the calculation for Call price
int a = rollDie(nThrow);
payoff = max(a - k,0);
sum += payoff;
cout << sum << type << " ";
}
else {
//specify the calculation Put price
int a = rollDie(nThrow);
payoff = max(k- a,0);
sum += payoff;
cout << a << sum << type << " ";
}
};
return (sum/nSim)*exp(-rf*expiry);
}
};
class DiceDerivativeCall : public DiceDerivative{
public:
double expiry;
double nThrow;
double k;
double rf;
DiceDerivativeCall(double expiry_, double nThrow_, double k_, double rf_)
{
string type = "Call";
expiry_ = expiry;
nThrow_ = nThrow;
k_ = k;
rf_ = rf;
};
};
class DiceDerivativePut : public DiceDerivative{
public:
double expiry;
double nThrow;
double k;
double rf;
DiceDerivativePut(double expiry_, double nThrow_, double k_, double rf_){
string type = "Put";
expiry_ = expiry;
nThrow_ = nThrow;
k_ = k;
rf_ = rf;
};
};
#endif /* DiceDerivative_hpp */
int main()
{
srand ( time ( NULL ) ) ;
DiceDerivativeCall myDDCall ( 1 , 5 , 12 , 0.05 ) ;
cout << "Price of myDDCall is: " << myDDCall .price(10) <<"\n" ;
}
// returns: Price of myDDCall is: 00 00 00 00 00 00 00 00 00 00 0
Program ended with exit code: 0
类{
双重到期;
双排;
int k;
双射频;
字符串类型;
int nSim;
公众:
双滚模(整数圈){
整流罩;
int i;
int min=1;//模具可以滚动的最小数量为1
int max=6;//此->模具尺寸;//最大值为模具尺寸
整数和=0;
对于(i=0;i 您应该阅读有关继承的介绍性文本。最突出的是,您在派生类中再次定义了成员double expiry;double nThrow;double k;double rf;
。但是由于它继承自基类,因此这些成员也已经是派生类的成员了。此外,类似expiry\=expiry
应该是expiry=expiry\ucode>,否则您将用成员的值替换函数的参数,但您想要相反的结果,对吗?@Ripi2您完全正确!这解决了传递元素的问题!谢谢。