构造函数不工作“错误:不匹配调用'(<class name =”“>)(int&amp;,int&amp;)”

时间:2016-06-26 19:10:42

标签: c++ arrays matrix constructor switch-statement

我写了一个简单的程序,它有几个可能的输入(i,c,l,v ..)。第一个输入是“i m n”,其中m和n是整数值。此命令生成一个包含m行和n列的2D数组。这是我的代码:

class myarray
{
    char** grid;
    int dimX,dimY;
public:
    myarray(){grid=0;}
    myarray(int m,int n) {grid = new char* [m]; for(int i=0;i<m;i++) {grid[i]=new char [n];} dimX=m; dimY=n;}
    ~myarray(){for(int i = 0; i < dimX; ++i) {delete[] grid[i];} delete[] grid;}
    char** fetcharray(){return grid;}

int main()
{
    srand(time(NULL));
    bool check(true),arrayinitialized(false);
    while(check)
    {
        char a; //a-firstinp;
        int m,n; //m,n-grid size

        cin>>a;

        myarray c;

        switch(a)
        {
        case 'i':
        case 'I': {cin>>m>>n;
                  **c(m,n);**
                  arrayinitialized=true;
                  break;}
        case ...:...
        default:{cout<<"Invalid input! Try again: "; break;}

然而,如果'我',我会收到错误:......;的 C(M,N);说“错误:不能匹配'(myarray)(int&amp;,int&amp;)'”。 当我声明变量myarray c;在作为局部变量(myarray c(m,n))的情况下,一切正常。但是,我希望变量c可以被其他情况访问,因此需要它在整个main()函数中可用,就像在上面的代码中一样。 有谁知道什么是错的,我该如何解决? 提前谢谢!

1 个答案:

答案 0 :(得分:1)

myarray

- 第二行要求operator()拥有myarray c(m, n); 。它不会调用构造函数。 (再次?)

尝试

myarray

在使用时,或使c = myarray(m, n); 可以正确复制和

table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
table.getSelectionModel().addListSelectionListener(
    new ListSelectionListener() {
        public void valueChanged(ListSelectionEvent e) {
            table.setRowSelectionInterval(0,0);
        }
);

我记得有些人告诉你默认的构造函数已经破坏,以及复制赋值...... The Rule of three。所以继续吧!

  

我希望其他案例可以访问变量c

然后它应该在循环之外。