[英]Program Terminates Itself
我正在尝试使用类在 C++ 中实现一个名为 HugeInteger 的新数据类型。 我遇到了一个问题,当我尝试创建新的 HugeInteger 时,我的程序在打印第一个数字时自行终止。 当我评论语句时,语句用户输入一个 HugeInteger 但显示数字的语句仍然存在,第一个数字未写入(数字的默认值为 0),第二个数字由用户填写。 我的尝试如下:
大整数.h
// HugeInteger class definition
#ifndef HUGEINT_H
#define HUGEINT_H
class HugeInteger
{
private:
int arr[40] = {0};
size_t len;
public:
void Input();
void Output();
};
#endif
大整数.cpp
#include "HugeInteger.h"
#include <iostream>
#include <sstream> // to fill arr
void HugeInteger::Input()
{
std::string line;
int i;
std::getline(std::cin, line);
for (size_t i = 0; i < line.length(); i++)
{
arr[i] = line[i] - '0';
}
len = line.length();
}
void HugeInteger::Output()
{
int i = 0;
while (i < len)
std::cout << arr[i++];
}
主.cpp
#include <iostream>
#include "HugeInteger.h"
int main()
{
HugeInteger hui = HugeInteger();
//hui.Input(); // when this is commented, Output method does not work.
hui.Output();
HugeInteger hui2 = HugeInteger();
hui2.Input();
hui2.Output();
return 0;
}
注意:我刚刚执行了另一个调试,我创建了另一个名为 getLen 的方法,以便我可以访问len属性。 但是,我将 Output 方法之前和之后的代码放在 main.cpp 中,但我看不到 len 的值,也没有这些毒物。 之后,我把arr属性设为public,想看里面的内容,也看不到。 我认为我的代码不起作用,在程序完成后,我只能以某种方式看到我输入的内容。 注意:我认为我没有遇到缓冲区溢出问题,因为我总是用 3 个 4 位数字调试我的程序,所以我的数组包含 3-4 个数字,而 rest 是 0。此外,我可能会放一个代码来处理这个问题。
调用Input()
设置len
成员的值。 没有调用,该成员未初始化,但仍由Output()
使用。
只需将其初始化为 0,类似于您对数组所做的操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.