You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

类构造函数中验证argv输入异常:栈大小未按规则修正

问题:栈构造函数未按规则修正数组大小

我正在完成课程作业,要实现一个存储结构体指针的栈,要求根据命令行传入的单个参数动态创建数组:如果传入的数值大于2就用这个值作为栈大小,否则默认设为10。但不管是把stoi(argv[1])的结果传入构造函数,还是手动传1,栈的大小都没按规则修正。我只能用这一个接收int参数的构造函数,而且觉得用if-else逻辑是可行的。已经排查到周四了,程序其他部分都完成了,就剩这个问题。不确定是参数被隐式设为const、构造函数没被正确调用还是其他原因,求帮忙。

类构造函数代码

Stack::Stack(int arrSize){
    this->top = -1;
    if (arrSize < 2){
                this->size = 10;
        stack = new Data*[size];
    }
    else{
                this->size = arrSize;
        stack = new Data*[size];
    }
}

类私有属性定义

private:
    int top;
    int size;
    Data **stack; //Data是一个包含int类型"id"和string类型"information"的结构体

主函数驱动代码片段

int main(int argc, char** argv) {
    srand(time(NULL));
    try{
    if (argc > 2){
    std::cout << "Please enter only a single parameter in the command line" << std::endl;
    }
    else{
    std::string strtemp;
    Data myStruct;    //为pop()初始化空结构体
    int arraySize = std::stoi(argv[1]);   //将argv[1]转为int,存入arraySize
    Stack stack(arraySize);     //创建Stack对象,传入arraySize作为参数
        ...省略后续代码...}

内容的提问来源于stack exchange,提问作者Kom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 18:22:42