如何初始化3d矩阵c ++

时间:2015-01-02 13:11:06

标签: c++ arrays dynamic matrix 3d

我不知道如何初始化3d矩阵。

这是终端类的3d矩阵:

contenidor ***_terminal;

多数是contenidor类:

class contenidor {

public:

  contenidor(const string &m, nat l) throw(error);

  contenidor(const contenidor &u) throw(error);

  ~contenidor() throw();

private:

   string _m;

   nat _l;

这就是我尝试初始化的方式:

contenidor _terminal = new contenidor**[n];
for(int x = 0; x < n; ++x) {
  _terminal[x] = new contenidor*[m];
  for(int y = 0; y < m; ++y) {
    _terminal[x][y] = new contenidor[y];
    for(int z = 0; z < h; ++z) { 
      _terminal[x][y][z] = 0;
    }
  }
}

终端显示的错误:

terminal.cpp: In constructor ‘terminal::terminal(util::nat, util::nat, util::nat, terminal::estrategia)’:
terminal.cpp:33:43: error: no matching function for call to ‘contenidor::contenidor()’
         _terminal[x][y] = new contenidor[y];
                                           ^
terminal.cpp:33:43: note: candidates are:
In file included from terminal.hpp:9:0,
                 from terminal.cpp:1:
contenidor.hpp:16:3: note: contenidor::contenidor(const contenidor&)
   contenidor(const contenidor &u) throw(error);
   ^
contenidor.hpp:16:3: note:   candidate expects 1 argument, 0 provided
contenidor.hpp:14:3: note: contenidor::contenidor(const string&, util::nat)
   contenidor(const string &m, nat l) throw(error);
   ^
contenidor.hpp:14:3: note:   candidate expects 2 arguments, 0 provided
terminal.cpp:35:8: error: ‘array’ was not declared in this scope
        array[x][y][z] = 0;
        ^

2 个答案:

答案 0 :(得分:0)

相信问题在于此;你的两个构造函数是:

contenidor(const string &m, nat l) throw(error);
contenidor(const contenidor &u) throw(error);

但是你正在调用_terminal[x][y] = new contenidor[y];,它试图找到一个无参数的构造函数contenidor()。创建一个不带args的构造函数,或者将args传递给_terminal[x][y] = new contenidor(...some arguments here...)[y];

答案 1 :(得分:0)

问题是我有一个没有可修改的hpp,我不能添加no-args构造函数,回答sintax:  _terminal [x] [y] =新的contenidor(......这里的一些论点......)[y]; 不正确

有人可以给我一个完整的解决方案吗?

感谢。