C++ 如何使用Inheritant类将参数传递给基类?

C++ 如何使用Inheritant类将参数传递给基类?,c++,C++,当我编译代码时,它返回0作为结果 我怀疑我的类声明没有将参数传递给基类,但是我不理解没有发生这种情况的原因 我正在努力研究如何定义基类和内在类,并通过它们之间的传递值将它们连接起来 我试图解决的问题是: 在到期日,持卡人掷n次常规骰子。结果由以下公式定义:max[(S-X);0]表示DivedInvaritiveCall,max[(X-S);0]表示DivedInvaritivePut,其中X是执行价格,S是n个结果的总和,四舍五入到最近的偶数。这两个类都在基类之后继承。一个例子 下面提供了ma

当我编译代码时,它返回0作为结果

我怀疑我的类声明没有将参数传递给基类,但是我不理解没有发生这种情况的原因

我正在努力研究如何定义基类和内在类,并通过它们之间的传递值将它们连接起来

我试图解决的问题是:

在到期日,持卡人掷n次常规骰子。结果由以下公式定义:max[(S-X);0]表示DivedInvaritiveCall,max[(X-S);0]表示DivedInvaritivePut,其中X是执行价格,S是n个结果的总和,四舍五入到最近的偶数。这两个类都在基类之后继承。一个例子 下面提供了main()函数中这些类的实现

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您完全正确!这解决了传递元素的问题!谢谢。