类模板和函数模板问题,具有挑战性!有经验和兴趣着进!!!
#include <iostream>
using namespace std;
template <class T> void counts();
template <class TT>
class HasFriendT
{
private:
TT item;
static int ct;
public:
HasFriendT (const TT& i):item(i) {ct++;}
~HasFriendT () {ct--;}
friend void counts<TT> (); // 1.
};
template <class T>
int HasFriendT<T>::ct=0;
template <class T>
void counts()
{
cout <<"template counts():" << HasFriendT<T>::ct <<endl;
}
// use.cpp
#include "header.h"
int main()
{
counts<int>();
HasFriendT<int> hfi1 (10);
HasFriendT<int> hfi2 (20);
HasFriendT<double> hfd (10.5);
counts<double> ();
counts<int> ();
return 0;
}
按照上述编译,指示标记1.的代码行有错误!!若是改之为friend void counts (); 则编译正常!!
哪个老兄能解释一下??感觉C++标准里第一种写法是正确的牙!怎么会出错呢??
我用的是VC6的编译环境!
相关推荐
C++的函数模板和类模板
函数模板和普通函数区别结论: 函数模板不允许自动类型转化 普通函数能够进行自动类型转换 函数模板和普通函数在一起,调用规则: 1 函数模板可以像普通函数一样被重载 2 C++编译器优先考虑普通函数 3 如果函数模板可以产生一个更好的匹配,那么选择模板 4 可以通过空模板实参列表的语法限定编译器只通过模板匹配 template void func(T x) { cout << "func的值是:" < T func(T x, T y) { co
c++函数模板和类模板计实验报告
练习 C++中函数模板、类模板的创建和使用方法。 (1) 理解模板的作用。 (2) 学习函数模板及其声明方法,掌握模板函数及其生成方法。 (3) 学习函数模板的两种不同的实例化方法。 (4) 学习类模板的声明与使用方法。
C++ 类模板、函数模板全特化、偏特化的使用
一、类模板全特化、偏特化 #pragma once #include #include template class TC { public: TC() { std::cout << "泛化版本构造函数" < class TC { public: TC() { std::cout << "全特化版本构
C++函数模板与类模板实例解析
本文针对C++函数模板与类模板进行了较为详尽的实例解析,有助于帮助读者加深对C++函数模板与类模板的理解。具体内容如下: 泛型编程(Generic Programming)是一种编程范式,通过将类型参数化来实现在同一份代码上操作多种数据类型,泛型是一般化并可重复使用的意思。泛型编程最初诞生于C++中,目的是为了实现C++的STL(标准模板库)。 模板(template)是泛型编程的基础,一个模板就是一个创建类或函数的蓝图或公式。例如,当使用一个vector这样的泛型类型或者find这样的泛型函数时,我们提供足够的信息,将蓝图转换为特定的类或函数。 一、函数模板 一个通用的函数模板(functi
学习C++的函数模板和类模板
为什么使用模板? 在算法相同,参数类型不同时简化函数重载功能,同样,类模板可以用不同类型 数据创建具有相同类结构的对象


