1 #include <iostream>
2 using namespace std;
3
4 //模板类的声明,可以引用友元类,也可以创建引用或者指针,不能创建全局对象
5 template<
class T>
class showit;
6
7 //错误
8 //showit<int> myint;
9
10 //模板类
11 template <
class T>
12 class myclass
13 {
14 public:
15 myclass(T m,T n):a(m),b(n)
16 {
17
18 }
19 ~
myclass()
20 {
21
22 }
23
24 private:
25 T a;
26 T b;
27
28 //模板函数声明也必须要带模板声明
29 template<
class T>
30 friend
void show(myclass<T> &
my);
31
32 //声明友元类
33 friend
class showit<T>
;
34 };
35
36 template<
class T>
37 void show(myclass<T> &
my)
38 {
39 cout << my.a << my.b <<
endl;
40 }
41
42 //友元类,包装一下模板类
43 template<
class T>
44 class showit
45 {
46 public:
47 myclass<T> *
p;
48 void set(T a, T b)
49 {
50 p =
new myclass<T>
(a, b);
51 cout << p->a << p->b <<
endl;
52 }
53 };
54
55 void main()
56 {
57 /*myclass<int> my1(29, 39);
58 show(my1);*/
59
60 showit<
int>
showit1;
61 showit1.
set(
12,
34);
62 cin.
get();
63 }
转载于:https://www.cnblogs.com/xiaochi/p/8618565.html
转载请注明原文地址: https://win8.8miu.com/read-27173.html