类构造函数中验证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
相关产品推荐
相关产品推荐

