如何在C++中定义并实现一个类,该类包含一个成员函数,用于接收二维数组和两个整数参数(表示行号和列号),返回对应位置的元素?请给出一个代码示例。
时间: 2024-11-09 18:17:22 浏览: 43
在C++中,你可以按照以下步骤定义一个类并实现一个成员函数来获取二维数组中的特定元素:
1. 首先,你需要声明一个二维数组模板,这样可以在不指定具体数据类型的情况下编写通用的代码。
```cpp
template <typename T>
class ArrayClass {
public:
// 其他类的内容
};
```
2. 定义一个构造函数来接受二维数组,以及行号和列号的范围。这里假设`rows`和`cols`是已知的。
```cpp
template <typename T>
ArrayClass<T>::ArrayClass(T array[], int rows, int cols) : m_data(array), m_rows(rows), m_cols(cols) {}
private:
T* m_data; // 存储二维数组的指针
int m_rows;
int m_cols;
```
3. 实现一个成员函数(get_element)来接收行号和列号,返回对应的元素值。
```cpp
template <typename T>
T ArrayClass<T>::getElement(int row, int col) const {
if (row >= 0 && row < m_rows && col >= 0 && col < m_cols) {
return m_data[row * m_cols + col]; // 访问二维数组元素
} else {
throw std::out_of_range("Row or column index out of range.");
}
}
```
这个函数检查索引是否有效,如果索引合法则返回相应元素,否则抛出异常。
完整代码示例:
```cpp
#include <stdexcept>
template <typename T>
class ArrayClass {
public:
ArrayClass(T array[], int rows, int cols) : m_data(array), m_rows(rows), m_cols(cols) {}
// 获取指定位置的元素
T getElement(int row, int col) const {
if (row >= 0 && row < m_rows && col >= 0 && col < m_cols) {
return m_data[row * m_cols + col];
} else {
throw std::out_of_range("Row or column index out of range.");
}
}
private:
T* m_data; // 存储二维数组的指针
int m_rows;
int m_cols;
};
int main() {
// 示例:创建一个二维整型数组
int arr[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
ArrayClass<int> myArray(arr, 3, 3);
try {
int element = myArray.getElement(1, 1); // 获取第2行第2列的元素
std::cout << "Element at (1, 1): " << element << std::endl;
} catch (const std::out_of_range& e) {
std::cerr << e.what() << std::endl;
}
return 0;
}
```
阅读全文