有A、B、C、D、E、F六个不同数据的获取接口,需要用C++写一套数据整理上报的代码,要用到C++的继承多态
时间: 2024-01-31 12:02:04 浏览: 17
以下是一个简单的实现:
```c++
#include <iostream>
#include <vector>
using namespace std;
class Data {
public:
virtual vector<int> getData() = 0;
};
class A : public Data {
public:
vector<int> getData() {
vector<int> data = {1, 2, 3, 4, 5};
return data;
}
};
class B : public Data {
public:
vector<int> getData() {
vector<int> data = {2, 4, 6, 8, 10};
return data;
}
};
class C : public Data {
public:
vector<int> getData() {
vector<int> data = {1, 3, 5, 7, 9};
return data;
}
};
class D : public Data {
public:
vector<int> getData() {
vector<int> data = {10, 9, 8, 7, 6};
return data;
}
};
class E : public Data {
public:
vector<int> getData() {
vector<int> data = {5, 4, 3, 2, 1};
return data;
}
};
class F : public Data {
public:
vector<int> getData() {
vector<int> data = {1, 1, 2, 3, 5};
return data;
}
};
class DataHandler {
public:
vector<Data*> dataSources;
vector<vector<int>> allData;
DataHandler(vector<Data*> sources) : dataSources(sources) {}
void fetchData() {
for (auto source : dataSources) {
allData.push_back(source->getData());
}
}
void reportData() {
for (auto data : allData) {
cout << "Data: ";
for (auto i : data) {
cout << i << " ";
}
cout << endl;
}
}
};
int main() {
A a;
B b;
C c;
D d;
E e;
F f;
vector<Data*> sources = {&a, &b, &c, &d, &e, &f};
DataHandler handler(sources);
handler.fetchData();
handler.reportData();
return 0;
}
```
这里定义了一个 `Data` 接口,包含了一个 `getData()` 纯虚函数。然后定义了6个不同的类来实现该接口,并分别实现了自己的 `getData()` 函数。最后定义了一个 `DataHandler` 类,用于处理和整理数据,该类包含了一个 `vector<Data*>` 成员变量,通过 `fetchData()` 函数遍历这些数据源,获取数据并存储到 `allData` 变量中,最后通过 `reportData()` 函数将所有数据打印出来。在 `main()` 函数中,创建所有数据源和一个数据处理器,并将所有数据源传递给处理器,调用 `fetchData()` 获取数据并调用 `reportData()` 打印数据。