当前位置:天才代写 > tutorial > C语言/C++ 教程 > C++:模板函数需要范例转换时利用友元(friend)模板函数

C++:模板函数需要范例转换时利用友元(friend)模板函数

2017-11-02 08:00 星期四 所属: C语言/C++ 教程 浏览:600

模板函数的隐式(implicit)范例转换, 涉及到模板参数(typename)简直定问题.

从int或double范例, 无法隐式转换为模板类(template class)的范例, 因为无法确定模板参数范例(typename), 就无法确定结构函数的参数.

所以需要使模板函数, 与模板类拥有沟通的参数范例(typename), 则需要成为模板类的友元(friend).

模板类的友元, 会跟着类的参数实例化, 而实例化参数范例, 从一个函数模板, 生成定制的函数, 即可以通过隐式范例转换.

因为生成了定制的函数, 所以无法找到外部的模板类界说, 可以通过:

1. 直接在友元函数内部, 实现代码(inline);

2. 在友元函数内部, 实现一个模板函数, 在把模板函数在外部实现.

代码如下:

/* 
 * test.cpp 
 * 
 *  Created on: 2014.04.22 
 *      Author: Spike 
 */
      
/*eclipse cdt, gcc 4.8.1*/
      
#include <iostream>  
      
template<typename T> class Rational;  
      
template<typename T>  
const Rational<T> doMultiply (const Rational<T>& lhs,  
    const Rational<T>& rhs);  
      
//有理数
//
result = 0.875

作者:csdn博客 Spike_King

 

    关键字:

天才代写-代写联系方式