我不知道如何初始化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;
^
答案 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]; 不正确
有人可以给我一个完整的解决方案吗?
感谢。