二维数组,不能成功填充数据。

时间:2013-02-07 13:46:52

标签: c++

我正在使用下面的课程

template<typename T>
class array_2d 
{
public:
    std::size_t data;
    std::size_t col_max;
    std::size_t row_max;
    std::vector<T> a;

    array_2d(std::size_t col, std::size_t row) : data(col*row), col_max(col), row_max(row), a(data)
    {}

    T& operator()(std::size_t col, std::size_t row) 
    {
        assert(col_max > col && row_max > row);
        return a[col_max*col + row];
    }
};

并将其初始化为

    array_2d<CString> tableData(5, 2);
    for(int r = 0; r < 5; r++)
        for(int c = 0; c < 2; c++)
            tableData(r, c) = "Test";

继续回来说我超越了矢量的界限。我已经尝试了几个小时来获得一个成功的二维CString数组。

3 个答案:

答案 0 :(得分:3)

tableData(c, r) = "Test";

答案 1 :(得分:1)

嗯..你的参数/参数顺序混淆了......

答案 2 :(得分:1)

tableData(r, c) = "Test";

VS

T& operator()(std::size_t col, std::size_t row)

当然不行。