2013-10-12 62 views
0

我遇到了问题。我想在类的构造函数中初始化我的2Dim数组,这是一个类的成员。例如 。C++在构造函数中初始化未知大小的2DimArray

class Foo 
{ 
    private: 

     bool testArray[100][4]; 

    public: 

     Foo(bool t_array[][4]);   
}; 
在Foo.cpp中文件

Foo::Foo(bool array[][4]) 
{ 
    // initilize it in there with unknown row size 
} 

我没有特定的行大小,但我知道,这将是最大100

我怎么能用来初始化我testArray在我构造函数?提前致谢。

+0

http://stackoverflow.com/questions/2409819/c-constructor-initializer-for-arrays?rq=1 –

+0

http://stackoverflow.com/questions/4680125/template-class-constructor-issues-designing -a-container-for-multidim-arrays?rq = 1 –

回答

1

由于bool [100][4]类型的数组在传递给构造函数时会衰减到bool (*) [4]类型的指针,因此您还应该传递行数。这个构造函数没有其他方法可以找出这个数组的实际大小。

或者,您可以考虑使用std::vector< std::array<bool, 4> >代替。

+0

感谢您的回复。我没有任何改变功能类型的权利。有没有一种方法可以在不更改声明的情况下找出它? – Bambi

+0

@Bambi:如果你使用一些值序列来标记数组的末尾,也许可以。不过,这似乎不是一个合理的解决方案。你为什么不能改变声明? – LihO

+0

@Bambi你被要求做一些不可能的事情,或者你误解了你所期望的事情。 – john