C++ 类模板中友元函数问题
#pragma once
#include<iostream>
template<typename T>
class TestFriendTemplate
{
public://模板类的友元函数的实现放在类外时,需加个<T>friend std::ostream& operator< <T> (std::ostream& out, const TestFriendTemplate<T>& ftemp);friend void TestFunc<T>(const TestFriendTemplate<T>& tmp);//模板以类的友元函数的实现在类内时,一切正常,不需要加<T>friend std::ostream& operator<< (std::ostream& out, const TestFriendTemplate<T>& ftemp) {out << "TestFriendTemplate.operator<<:" << ftemp.x << ", " << ftemp.y;return out;}static void TestFriendTemp() {printf("TestFriendTemplate\n");std::ostream& out = std::cout; //正确//std::ostream out = std::cout; //报错,basic_ostream(const basic_ostream&) = delete,禁止copy了}private:int x = 0;int y = 1;
};template<typename T>
std::ostream& operator<(std::ostream& out, const TestFriendTemplate<T>& ftemp)
{out << "TestFriendTemplate.operator<:" << ftemp.x << ", " << ftemp.y;return out;
}//实现写在这里可以,如果移动到一个cpp文件中,就编译不过了,这也是模板的一个典型问题(当声明和实现分别在头文件和CPP中时)
template<typename T>
void TestFunc(const TestFriendTemplate<T>& tmp) {std::cout << "TestFunc:" << std::endl;
}
C++ 类模板中友元函数问题相关推荐
- 类模板,多种类型的类模板,自定义类模板,类模板的默认类型,数组的模板实现,友元和类模板,友元函数,类模板与静态变量,类模板与普通类之间互相继承,类模板作为模板参数,类嵌套,类模板嵌套,类包装器
1.第一个最简单的类模板案例 #include "mainwindow.h" #include <QApplication> #include <QPush ...
- c++模板---3(类模板碰到继承问题,类模板类外实现,类模板与友元函数)
类模板碰到继承问题 基类如果是模板类,必须让子类告诉编译器 基类中的T到底是什么类型 如果不告诉,那么无法分配内存,编译不过 利用参数列表class Child :public Base<int ...
- C++提高部分_C++类模板中成员函数的创建时机---C++语言工作笔记089
然后我们再来看类模板中成员函数的创建时机是什么时候 可以看到,普通类中的成员函数一开始就可以创建了, 类模板中的成员函数在调用时才创建. 我们写个例子看看,可以看到我们写了一个Person1类,然后 ...
- C++模板学习02(类模板)(类模板语法、类模板与函数模板的区别、类模板中的成员函数创建时机、类模板对象做函数参数、类模板与继承、类模板成员函数类外实现、类模板分文件编写、类模板与友元)
C++引用详情(引用的基本语法,注意事项,做函数的参数以及引用的本质,常量引用) 函数高级C++(函数的默认参数,函数的占位参数,函数重载的基本语法以及注意事项) C++类和对象-封装(属性和行为作为 ...
- C++模板:类模板和类模板的友元【C++模板】(57)
类模板 Stack 类 类模板 格式 类模板的应用 类模板的多文件实现 类模板的友元 类模板中的友元在.h 类模板中的友元在.cpp hpp STL入门 类模板 Stack 类 我们先给出我们之前实现 ...
- 学习笔记-----C++模板类中友元函数重载输出运算符时提示无法解析的外部符号解决方案
今天在写单向链表实现线性表的时候打算重载输出运算符用来将线性表输出,结果无奈又遇到了问题. 大致代码如下 <pre name="code" class="cpp&q ...
- 模板 (函数模板语法 ,类模板与函数模板的区别,:函数模板案例,普通函数与函数模板的区别,普通函数与函数模板调用规则,模板的局限性,类模板分文件编写.cpp,Person.hpp,类模板与友元)
**01:函数模板语法: #include<iostream> using namespace std;//交换两个整型函数 void swapInt(int &a ,int &a ...
- C++ 类模板二(类模版与友元函数)
http://www.cnblogs.com/zhanggaofeng/p/5661829.html //类模版与友元函数 #include<iostream> using namespa ...
- 类模板里面的函数写在类模板里面和写在类模板的外面,且在1个.cpp文件中
和类一样,类模板里面声明的函数,其函数体写在类里面和外面都行,但是有一点需要注意:1.用友元函数重载<< 或 >>运算符,函数声明写在类模板里面,函数实现写在类模板外面,要在函 ...
最新文章
- 1130 Infix Expression
- 使用文件操作函数实现:文件的复制功能。
- 2019.6.16完成classstack任务
- 求职OMG——大学生就业指导与技能
- 581. 最短无序连续子数组
- IndexError:boolean index did not match indexed array along dimension 0
- 【服务器】WAMP一键安装PHP开发环境
- cisco 反转多路复用的妙用
- 不借助第三方jar包实现文件上传
- 【优化预测】基于matlab粒子群算法优化SVM预测【含Matlab源码 1424期】
- sql根据身份证号获取年龄和性别(Oracle+hive)
- 肩外展固定支架的规格参数介绍和使用方法
- 怎样用python获取财经网新闻
- background url怎么填充_CSS background 属性
- AR增强现实技术解读
- 几乎所有编程语言的hello, world程序(1)
- “App开发者需要更新此App以在此iOS版本上正常工作 ” 解决方法
- linux中|管道符的作用
- OPCODES学习网址
- 微分dx、dy是无穷小吗?
热门文章
- delphi中exit,abort,break,continue,halt,runerro 的区别
- MobileIMSDK怎样修改服务端核心jar包的源码并替换掉Java服务端的jar包
- Jquery控制select实现dataTables数据联动刷新
- 基于用例点来度量软件规模并管理进度 之三
- 启动rocketmq_RocketMQ 部署启动指南-Docker 版
- 关于 To B,我欠粉丝们一个热搜
- 神策数据桑文锋:让销售回归科学
- 删除个别主机的Know_hosts文件信息
- MySQL高可用的几种方案
- 用Kotlin打造一个Router