2016-11-24 93 views
0

我是C++的初学者,我被困在这个问题上C++类,对象和内存管理

使用适当的文件结构,创建一个名为“Matrix”的类。这个类应该有:(1)一个私有的二维容器,包含std :: array类型的浮点数;(2)一个方法,用一个作为参数传入的浮点数填充2D容器的所有元素;(3)以适当的2D格式打印出容器的内容,以及(4)容器各个元素的getter/setter方法。对于(4),确保您测试出界限请求。在主要功能中使用合适的代码进行测试。

class Matrix 
{ 
private: 
    std::array<std::array<float, 3>, 3> arr = { { { 5, 8, 2 },{ 8, 3, 1 },{ 5, 3, 9 } } }; 
public: 
    void display(); 

}; 
int main() 
{ 
    Matrix Matrixclass; 
    Matrixclass.display(); 

    return 0; 
} 
void Matrix::display() 
{ 
    cout << "Values inside the container: " << endl; 

    for (int i = 0; i < 3; i++)    //rows 
    { 
     for (int j = 0; j < 3; j++)   //columns 
     { 
      std::cout << arr[i][j] << " "; 
     } 
     std::cout << std::endl; 
    } 
} 

我在正确的轨道上吗?干杯。

+1

一切是否按预期工作?所以你可能是。 –

+0

这取决于你在哪个轨道上。显然,通向翡翠城的赛道将是正确的赛道,但是以无底深渊陷入终点的赛道将是错误的赛道。只有你知道你在哪个轨道上...... –

+1

显然,代码在某处使用了'namespace std;'。这绝对是错误的。将标准库放入自己的名称空间有很好的理由,吹走名称空间不是一个好主意。另外,除非你需要额外的东西,否则不要使用'std :: endl'; ''\ n''结束一行。 –

回答

0

std :: array是一个固定大小的数组。除非你只是想实现一个3乘3的矩阵。如果你打算在未来有更多的维度矩阵,使用std :: vector可能是一个更好的选择。确保你做尺寸验证。

另一个选择是使用模板,它可以让你灵活地有其他类型的矩阵。