为什么Xcode无法识别argc?

问题描述 投票:1回答:2

我想检查呼叫者是否传递了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;
c++ argc
2个回答
1
投票

您发现您的研究结果是,在argc中使用main来确定调用该程序时将多少命令行参数传递给该程序。这不是您所需要的。

由于set具有两个参数,因此调用方将始终必须指定outOf。这意味着您无需检查它是否已提供。如果希望能够在不提供set的情况下调用outOf,那么您需要的是default argumentoutOf,如果调用者不提供,则代码将使用该代码。这样会将您的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);的值>


0
投票

main有两个有效的声明:

© www.soinside.com 2019 - 2024. All rights reserved.