使用什么构造函数

时间:2015-06-01 10:55:47

标签: c++

我必须设计一个继承自vector<vector<int>>的int2d类,以便代码如下:

int main() 
{ 
    int2d t1(4, 3);

    for(int i = 0; i < 4; i++) 
    {
        for(int j = 0; j < 3; j++)
        { 
            t1(i, j) = i + j;
        }
    }

    for(int i = 0; i < 4; i++) 
    { 
        for(int j = 0; j < 3; j++)
            cout << t1(i, j) << " "; 
        {
            cout<<endl; 
        }
    } 
}

...产生以下结果:

0 1 2
1 2 3 
2 3 4 
3 4 5

我已写过:

class int2d : public vector<vector<int>> {
public:
    vector<vector<int>> vec;
    int a;
    int b;

    //vector<int> tmp;
    //vector<vector<int>> vec(b);
    int2d(int a, int b) {

        vector<int> tmp(b);
        vector<vector<int>> vec(a);
        for(int i = 0; i < a; i++) {
            vec.push_back(tmp);
        }
    }

    int2d& operator = (const int2d& X){
        if (this == &X)
            return *this;
        int2d tmp(X.a, X.b);
    }

    int2d& operator = (const int& X){
        vec[a][b] = X;
    }
};

但是如何让t1(i, j) = i + j;编译和工作?

1 个答案:

答案 0 :(得分:0)

您只需要operator()(std::size_t, std::size_t)可能同时包含const和非const重载。

我强烈建议不要继承标准容器。只需将标准容器作为您班级的成员。