|
发表于 2020-1-7 22:10:05
|
显示全部楼层
你中午的那个代码也不行,你现在不是要一个函数返回多个类型,而是要进行类型转换
我也没有好的办法,我再研究研究
- #include <string>
- #include <iostream>
- using namespace std;
- //中间类
- template <typename T>
- struct IA_templ {
- virtual T GetData() = 0;
- };
- //接口类
- struct IA {
- public:
- template <typename T>
- T GetData() {
- return dynamic_cast<IA_templ<T>*>(this)->GetData();
- }
- virtual ~IA() {};
- };
- //模板类
- template <typename T>
- class A:public IA, public IA_templ<T> {
- T data; //需要的数据成员
- public:
- A(const T& t):data(t) {};
- T GetData() override { //这是继承的函数
- return data;
- }
- };
- int main() {
- IA *p = new A<int>(5);
- cout << p->GetData<int>() << endl; //输出5
- cout << p->GetData<double>() << endl; //输出5.00000 // 直接崩溃退出
- cout << p->GetData<string>() << endl; //错误
- system("pause");
- }
复制代码 |
|