[ create a new paste ] login | about

Link: http://codepad.org/HRXGNR28    [ raw code | output | fork ]

C++, pasted on May 16:
#include <iostream>
#include <vector>
#include <memory>
#include <cstdlib>

template <class T>
class Array {
  T** a;
  int nn;
public:
  Array(int n) : a(0), nn(n) {
    a = new T*[nn];
    for (int i = 0; i < nn; i++) {
      a[i] = new T[nn];
      for (int j = 0; j < nn; j++)
        a[i][j] = std::rand();
    }
  }
  Array(const Array<T>& at) {
    // aが空だったらメモリ確保
    if (!a) {
      nn = at.nn;
      a = new T*[nn];
      for (int i = 0; i < nn; i++)
        a[i] = new T[nn];
    }
    for (int i = 0; i < nn; i++)
      for (int j = 0; j < nn; j++)
        a[i][j] = at.a[i][j];
  }
  Array<T>& operator=(const Array<T>& at) {
    // aが空だったらメモリ確保
    if (!a) {
      nn = at.nn;
      a = new T*[nn];
      for (int i = 0; i < nn; i++)
        a[i] = new T[nn];
    }
    for (int i = 0; i < nn; i++)
      for (int j = 0; j < nn; j++)
        a[i][j] = at.a[i][j];
    return *this;
  }
  ~Array() {
    for (int i = 0; i < nn; i++)
      delete[] a[i];
    delete[] a;
  }
};

const int N = 2;

int main()
{
  std::vector<Array<int> > ai;

  for (int i = 0; i < N; i++)
    ai.push_back(Array<int>(5));
}


Output:
1
2
3
4
cc1plus: warnings being treated as errors
t.cpp: In member function 'void __gnu_cxx::_ConvertibleConcept<_From, _To>::__constraints() [with _From = Array<int>, _To = Array<int>]':
Line 21: warning: '__y.Array<int>::a' is used uninitialized in this function
Line 27: warning: '__y.Array<int>::nn' is used uninitialized in this function


Create a new paste based on this one


Comments: