类模板和函数模板问题,具有挑战性!有经验和兴趣着进!!!

hawkxjy hawkxjy 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
// header.h
#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 &lt;&lt; "func的值是:" &lt; T func(T x, T y) { co

weixin_38523251

c++函数模板和类模板计实验报告

练习 C++中函数模板、类模板的创建和使用方法。 (1) 理解模板的作用。 (2) 学习函数模板及其声明方法,掌握模板函数及其生成方法。 (3) 学习函数模板的两种不同的实例化方法。 (4) 学习类模板的声明与使用方法。

Jonny的ICU

C++ 类模板、函数模板全特化、偏特化的使用

一、类模板全特化、偏特化 #pragma once #include #include template class TC { public: TC() { std::cout &lt;&lt; "泛化版本构造函数" &lt; class TC { public: TC() { std::cout &lt;&lt; "全特化版本构

weixin_38534683

C++函数模板与类模板实例解析

本文针对C++函数模板与类模板进行了较为详尽的实例解析,有助于帮助读者加深对C++函数模板与类模板的理解。具体内容如下: 泛型编程(Generic Programming)是一种编程范式,通过将类型参数化来实现在同一份代码上操作多种数据类型,泛型是一般化并可重复使用的意思。泛型编程最初诞生于C++中,目的是为了实现C++的STL(标准模板库)。 模板(template)是泛型编程的基础,一个模板就是一个创建类或函数的蓝图或公式。例如,当使用一个vector这样的泛型类型或者find这样的泛型函数时,我们提供足够的信息,将蓝图转换为特定的类或函数。 一、函数模板 一个通用的函数模板(functi

ALCH-WUR

学习C++的函数模板和类模板

为什么使用模板? 在算法相同,参数类型不同时简化函数重载功能,同样,类模板可以用不同类型 数据创建具有相同类结构的对象

tutuhai34
评论 15
收藏 已收藏
分享
返回顶部
hawkxjy
C++ 语言 65,214 成员 250,514 内容