我想知道是否有人可以給我例子如何聲明一個二維數組,如果我想使用它作爲類變量。大小也應該是變量。C++二維數組作爲私有類變量
0
A
回答
1
這取決於你所說的「數組」。在C++中,如果在編譯時未知其大小(或大小),則無法聲明內置數組類型的成員。
如果您需要一個具有運行時大小數組結構的數據結構,則必須自己實現它或使用庫實現。在這種情況下,類的直接私有成員不會被聲明爲內置數組類型,而是作爲某種間接引用存儲在動態內存中的實際數組。在最簡單的情況下,您將不得不聲明指針類型的成員。或者,您可以使用std::vector
類型的成員,該成員通常將實際的數組數據保存在動態內存中,並在內部存儲指針。
在你的情況,對於一個二維數組可以聲明std::vector<std::vector<T>>
類型的成員。
0
class ThisClass {
private:
int** MyArray;
int Xlim,Ylim; //Xlim can be used during deletion. May be useful elsewhere.
public:
ThisClass(int x,int y) {
Xlim = x;
Ylim = y;
MyArray = new int*[x];
for(int i = 0; i < x; i++) {
MyArray[i] = new int[y];
}
}
~ThisClass() {
for(int i = (Xlim-1); i >= 0; i--) {
delete [] MyArray[i];
}
delete [] MyArray;
}
};
int main(int argc, char* argv[]) {
ThisClass Mine(3,4);
return 0;
}
0
大小你沒有明確說明你想要一個可變大小的多維數組(只是你想要大小變量),這裏是一個固定大小的解決方案。
template <typename T, unsigned int WIDTH, unsigned int HEIGHT>
struct Matrix
{
Matrix() : width(WIDTH), height(HEIGHT) {}
T* operator[](unsigned int idx) { return elements[idx]; }
T elements[WIDTH][HEIGHT];
int width, height;
};
class Foo
{
public:
float GetValue(unsigned int x, unsigned int y)
{
// Now you can access the width and height as variables.
assert(x < m_matrix.width && y < m_matrix.height);
// Operator allows you to index like so.
return m_matrix[x][y];
}
private:
// A private, 4 by 4 matrix of floats.
Matrix<float, 4, 4> m_matrix;
};
相關問題
- 1. C++:二維數組作爲類成員
- 2. 如何初始化二維數組作爲類變量?
- 3. C#變二維數組
- 4. 二維數組作爲返回值C++
- 5. 作爲二維數組返回類型
- 6. 私有屬性C++上的動態二維數組
- 7. C - 二維數組
- 8. C++二維數組
- 9. C#通用二維數組作爲返回類型
- 10. 在C++中創建對象作爲私有類變量
- 11. 在二維數組中插入變量
- 12. 二維數組實例變量
- 13. 二維數組,方法和變量
- 14. 數組作爲類的私有成員
- 15. 從二級類不可讀的C++私有變量
- 16. C中的二維數組如何變成一維數組?
- 17. C++返回常量二維數組
- 18. 二維數組通過C++中的類
- 19. C#表格/二維數組類型
- 20. 如何將2維數組作爲類中的私有變量,然後將其設置在構造函數中
- 21. 訪問類C++的私有變量
- 22. 帶有一維變量的Fortran 95數組中的二維數組
- 23. 初學者C++使用訪問器/獲取器從私有成員變量(二維數組)中提取數據
- 24. 將一維數組爲二維數組
- 25. 使用變量作爲C++中數組的維度?
- 26. 作爲參數值的二維數組
- 27. 使用二維數組作爲參數
- 28. 將二維向量轉換爲二維數組
- 29. 從二維數組轉換爲矢量
- 30. C++類的私有動態n維數組
你應該去看看你應該怎麼做,然後回來,並顯示你做了什麼。那麼我們可以幫助您解決您遇到的任何問題! – Aesthete