2013-10-12 97 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