C ++ - 不能为我的生活找出我错在这里(动态数组)

时间:2014-03-26 20:41:26

标签: c++ arrays

尝试在这里从一个整数创建一个整数数组(这是为了创建一个更大的整数的家庭作业)。这里的所有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();
}

0 个答案:

没有答案