我想检查呼叫者是否传递了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;
您发现您的研究结果是,在argc
中使用main
来确定调用该程序时将多少命令行参数传递给该程序。这不是您所需要的。
由于set
具有两个参数,因此调用方将始终必须指定outOf
。这意味着您无需检查它是否已提供。如果希望能够在不提供set
的情况下调用outOf
,那么您需要的是default argument的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);
的值>
main
有两个有效的声明: