尝试在这里从一个整数创建一个整数数组(这是为了创建一个更大的整数的家庭作业)。这里的所有couts都是我试图弄清楚为什么它似乎不想打印整数。这是我的构造函数:
MyInt::MyInt (int n)
{
maxsize = 1;
if (n > 0) {
// Divides the number by 10 to find the number of times it is divisible; that is the length
int i = n;
while (i > 1) {
i = i / 10;
maxsize++;
cout << "\nMax Size is = " << maxsize;
}
}
intstring = new int[maxsize];
for (int j = (maxsize - 1); j >= 0; j--) {
// Copies the integer into an integer array by use of the modulus operator
intstring[j] = n % 10;
n = n / 10;
cout << "\nj = " << j;
cout << "\nintstring[j] = " << intstring[j];
}
}
我编写了一个测试show函数来测试构造函数和一些操作符重载,我做得很快,我得到了一个分段错误。我不确定它是来自这个构造函数还是来自const char *的转换,所以我开始尝试只使用int转换(即MyInt(12345)。这里是show函数:
void MyInt::testShow() {
for (int i = 0; i < maxsize; i++) {
cout << intstring[i];
}
}
现在这是它的打印内容:
Max Size is = 2
Max Size is = 3
Max Size is = 4
Max Size is = 5
j = 4
intstring[j] = 5
j = 3
intstring[j] = 4
j = 2
intstring[j] = 3
j = 1
intstring[j] = 2
j = 0
这里也是我的析构函数,不确定这是否导致问题?
MyInt::~MyInt ()
// Destructor
{
delete [] intstring;
}
cout只是...停在那里。不打印任何其他内容。无法解决我的生活。我已经说明了它,我并不认为我在构造函数中走出界限,但我可能是错的。除了构造函数和析构函数之外,我还尝试注释掉除了其他函数之外的其他函数,但是这种奇怪的东西仍然存在。如果你们需要更多信息,请告诉我们。
编辑:头文件:
class MyInt
{
public:
MyInt (int n = 0); // first constructor
MyInt (const char* c);
MyInt& operator++ ();
MyInt operator++ (int i);
MyInt& operator-- ();
MyInt operator-- (int i);
~MyInt ();
MyInt (const MyInt& mi);
MyInt& operator= (const MyInt& mi);
void testShow();
private:
int* intstring;
int maxsize;
};
我的主要职能是:
int main () {
MyInt a(12345);
a.testShow();
}