我想在将参数放入构造函数之前检查参数

时间:2017-09-13 22:47:15

标签: c++ class oop inheritance

在类b中我想检查n和m是否大于0然后将它们放入a的构造函数中。我该怎么办?

class a{
private:
    int x; int y;
public:
    a(int x, int y){
        this->x=x; this->y=y;
    }
    void print(){
        cout<<x<<" "<<y<<endl;
    }
};

class b:public a{
public:
    b(int n,int m):a(){
        ///
    }
}; 

1 个答案:

答案 0 :(得分:1)

必须有一个更优雅的方法,但这是我现在最好的方法。您可以使用ternary operator检查变量,因为它们被传递给this.itemService.getMockItemState(sensor) .subscribe(status => { this.currentValues.push(status); this.checkValues(); }); 构造函数的调用。

a

输出结果为:

#include <iostream>

class a
{
private:
    int x; int y;
public:
    a(int x = 0, int y = 0)
    {
        this->x = x; this->y = y;
    }

    void print()
    {
        std::cout << x << " " << y << "\n";
    }
};

class b : public a
{
public:
    b(int n,int m) : a( 
        n > 0 && m > 0 ? n : 0, 
        n > 0 && m > 0 ? m : 0
    )
    {

    }
};

int main()
{
  b B(-1, 1);
  B.print();

  b B2(1, 1);
  B2.print();

  b B3(-1, -1);
  B3.print();
}

根据您的代码风格标准,这种方法可能不受欢迎,并且没有利用0 0 1 1 0 0 构造函数中的默认值,但它会完成工作,至少在这个简单的例子中。