2014-05-19 52 views
2
class Sesion 
{ 
private: 
     int wymiar = 2; 
     int **tablica = new int *[wymiar]; 
     int licznik = 0; 

    void save(int x, int y) 
    { 
      for (int i = 0; i < wymiar; i++) 
        tablica[i] = new int[wymiar]; 

      tablica[0][licznik] = x; 
      tablica[1][licznik] = y; 

      licznik++; 
    } 

    void open() 
    { 
      for (int i = 0; i < licznik; i++) 
      { 
       cout << tablica[0][i] << endl; 
      } 
    } 
} 

我不知道如何读取open()中的值,因为我在那里得到奇怪的数字。动态数组 - 读取

save()一切工作完美。我必须将x和y保存为无限数组,然后从中读取这些值。

我知道我可以使用矢量,但我需要使用动态数组

+2

你可以发布你正在使用产生的奇怪行为的代码? –

回答

0

考虑使用std::vector,例如做

class Sesion 
{ 
private: 
    struct Point { int x, y; }; 

    std::vector<Point> points_; 

public: 
    void save(int x, int y) 
    { 
     points_.push_back(Point{x, y}); 
    } 

    void open() 
    { 
     for (Point const& point : points_) 
     { 
      cout << point.x << " " << point.y << endl; 
     } 
    } 
}; 
3

你不必要地使你的生活变得复杂。以安全的方式自行管理内存分配/释放将成为PITA。更不用说你的代码也受内存泄漏的影响。

我也注意到你总是保存一双int s。您应该使用std::pair或自定义结构/类,结合使用std::vector

下面是一个例子:

class Sesion { 
private: 
    std::vector<std::pair<int, int>> tablica; 
public: 
    void save(int x, int y) { 
     tablica.emplace_back(x, y); 
    } 

    void open() { 
     for (auto p : tablica) 
      std::cout << std::get<0>(p) << ',' << std::get<1>(p) << '\n'; 
    } 
}; 

Live demo