创建类模板AofP,保证下面的主函数正常执行 template<class T1, class T2> class AofP { T1 p1,p2; T2 p3; …} template<class T2> class AofP<int, T2> { …} int main() { AofP<int, int> arr1(20,30,5); cout<<arr1.p1p2len(); }
时间: 2023-12-19 21:07:59 浏览: 202
cpp代码-模板 泛型 template<typename> template<class>
好的,下面是一个完整的类模板AofP的定义,包括p1p2len()函数的实现:
```cpp
#include <iostream>
using namespace std;
template<class T1, class T2>
class AofP {
private:
T1 p1, p2;
T2 p3;
public:
AofP(T1 _p1, T1 _p2, T2 _p3) : p1(_p1), p2(_p2), p3(_p3) {}
int p1p2len() {
return p2 - p1;
}
};
template<class T2>
class AofP<int, T2> {
private:
int p1;
T2 p2, p3;
public:
AofP(int _p1, T2 _p2, T2 _p3) : p1(_p1), p2(_p2), p3(_p3) {}
int p1p2len() {
return p2 - p1;
}
};
int main() {
AofP<int, int> arr1(20,30,5);
cout << arr1.p1p2len(); // 输出 10
return 0;
}
```
在这个实现中,我们在AofP类中定义了一个构造函数来初始化成员变量。我们还定义了p1p2len()函数来计算p1和p2之间的长度,并返回该值。在AofP<int, T2>的特化定义中,我们定义了一个新的成员变量p1,并将其用于计算长度。
在主函数中,我们定义了一个AofP<int, int>对象arr1,并将其初始化为(20, 30, 5)。然后,我们调用了arr1的p1p2len()函数,并将其输出到控制台上。最终,我们得到了10作为输出结果,表明p1和p2之间的长度为10。
阅读全文