**关闭。**此题需要debugging details。目前不接受答复。
编辑问题以包括desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将帮助其他人回答这个问题。
4天前关闭。
Improve this question
我正在处理一个类赋值,在那里我需要创建一个结构堆栈。我应该动态创建一个指针数组,大小基于一个命令行输入。传递给构造函数的值应该大于2,如果不大于2,则将其设置为10。每当我将arrSize = stoi(argv[1])传递给Class(int)时,它都会返回我所放置的任何内容,而不会更改它。
即使我手动设置intarrSize = 1,它仍然不能正确地过滤值。我相信构造函数中的if-else语句是可以的,因为我不知道还有其他方法来测试和更改传递的arg;我也只能在类中有一个构造函数,它接受argv值作为参数。
我觉得我犯了一些可悲的简单错误,但我一直在努力弄清楚这一点,因为周四。我已经完成了程序的其余部分,这是我需要修复的最后一件事。
我不能弄清楚变量是否以某种《双城之战》的方式作为常量传递,或者构造函数是否没有被有效调用,或者它是否完全是别的东西。任何帮助非常感谢。
类构造函数:
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 is a struct with int "id" and 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; //initializing empty struct for pop()
int arraySize = std::stoi(argv[1]); //converting argv[1] to int, store in arraySize
Stack stack(arraySize); //create Stack object, passing arraySize as arg
...truncated...}
1条答案
按热度按时间k2arahey1#
我发布的代码实际上没有任何问题,我没有正确使用size属性,它导致了初始化错误。
我很感激所有关于更好风格的建议,我会考虑的。至于使用向量的问题,这是一门数据结构课,所以我认为重点是从计算机科学的Angular 来学习重建堆栈,链表,哈希表;而不是编程的Angular 。
谢谢大家!