问题

我想检查调用者是否传递了outOf的值,如果没有,我想使用默认值.我在网上做了一些研究,看到您可以使用argc查看传递了多少变量.我尝试在下面的代码中使用它,但我收到以下错误

 Use of undeclared identifier 'argc'
 

如何修复以下代码?

  #include "Mark.h"
 #include <iostream>


using namespace std;


void Mark::set(int displayMode){
    m_displayMode= displayMode;
}

void Mark:: set(double mark, int outOf){
    m_mark= mark;
    if ( int argc < 2){
        m_outOf=1;
    }else{
        m_outOf=outOf;
    }


}
void Mark:: Mark ::setEmpty(){
    m_displayMode= DSP_UNDEFINED;
    m_mark=-1;
    m_outOf = 100;

}

bool Mark:: isEmpty()const{
    bool result= true;
    if((m_displayMode==DSP_UNDEFINED) && (m_mark==-1) && (m_outOf==100)){
        result =true;
    }else{
         result = false;
    }
    return result;
}
 

主要职能

 m2.setEmpty();
    cout << "Setting m2 to the raw value of m1..." << endl;
    m2.set(m1.rawValue());
    cout << "done!" << endl;
    cout << "m2: The mark is: ";
    m2.set(DSP_ASIS);
    m2.display() << endl;
    cout << "m2: With the raw value of: ";
    m2.set(DSP_RAW);
    m2.display() << endl;
    cout << "m2: And percentage value of: ";
    m2.set(DSP_PERCENT);
    m2.display() << endl;
 

  最佳答案

您发现的是您的研究是argcmain中使用,以确定调用时传递给程序的命令行参数有多少.这不是您需要的.

由于set需要两个参数,调用者总是必须指定outOf.这意味着您永远不必检查是否提供了它.如果您希望能够调用set或者不提供outOf,那么您需要的是默认参数,如果调用者不提供,代码将使用outOf.这将改变您的set

 void Mark::set(double mark, int outOf = 1){
    m_mark= mark;
    m_outOf=outOf;
}
 

现在m_outOf将设置为1,如果您调用foo.set(1),并将设置为N的值,如果您调用set,如foo.set(1, N);

  相同标签的其他问题

c++argc