看看这个关于模板友元问题是不是很有难度!
我的代码是这样的:
这是类模板声明和定义在classtemplate.h文件中:
template <class T=int,class M=float,double N>class myclassTemplate{
public:
myclassTemplate();
~myclassTemplate();
friend void add(int s);//所有实例的友元
friend M add(M e,M n); //某个实例类的友元
protected:
private:
};
template <class T,class M,double N> myclassTemplate<T,M,N>::myclassTemplate()
{
cout<<"constrcting function:const :"<<N<<endl;
}
template <class T,class M,double N> myclassTemplate<T,M,N>::~myclassTemplate()
{
cout<<"deconstructing function:"<<endl;
}
void add(int s)//所有实例的友元
{
std::cout<<"s:"<<s<<std::endl;
}
template <class T,class M,double N>
M add(M e,M n) //某个实例类的友元。
{
return(e+n);
}
下面是调用这两个友元函数:
#include<iostream>
#include "classtemplate.h"
using namespace std;
void main()
{
myclassTemplate<int,float,20.23> myclass;
add(2);
cout<<"add:"<<add(10.7,36.8)<<endl;
}
add(10.7,36.8)函数
输出的:46.7,为什么答案不对呢?
还有
void add(int s)//所有实例的友元
{
std::cout<<"s:"<<s<<std::endl;
}这个函数为什么用cout<<"s:"<<s<<endl;编译不过去?
百思不得其解,高手指点!
这是类模板声明和定义在classtemplate.h文件中:
template <class T=int,class M=float,double N>class myclassTemplate{
public:
myclassTemplate();
~myclassTemplate();
friend void add(int s);//所有实例的友元
friend M add(M e,M n); //某个实例类的友元
protected:
private:
};
template <class T,class M,double N> myclassTemplate<T,M,N>::myclassTemplate()
{
cout<<"constrcting function:const :"<<N<<endl;
}
template <class T,class M,double N> myclassTemplate<T,M,N>::~myclassTemplate()
{
cout<<"deconstructing function:"<<endl;
}
void add(int s)//所有实例的友元
{
std::cout<<"s:"<<s<<std::endl;
}
template <class T,class M,double N>
M add(M e,M n) //某个实例类的友元。
{
return(e+n);
}
下面是调用这两个友元函数:
#include<iostream>
#include "classtemplate.h"
using namespace std;
void main()
{
myclassTemplate<int,float,20.23> myclass;
add(2);
cout<<"add:"<<add(10.7,36.8)<<endl;
}
add(10.7,36.8)函数
输出的:46.7,为什么答案不对呢?
还有
void add(int s)//所有实例的友元
{
std::cout<<"s:"<<s<<std::endl;
}这个函数为什么用cout<<"s:"<<s<<endl;编译不过去?
百思不得其解,高手指点!
...全文
相关推荐
c++模板友元函数 友元类
关于c+模板之友元类友元函数的实例化,图形界面之矩形。
Discuz! 广西摄友
更新迭代,模板也需要定期维护和升级,以保持与新版本的兼容性,同时修复可能出现的问题。总的来说,"Discuz!
Discuz! 猫友
【标题】"Discuz! 猫友" 指的是一款基于 Discuz! 平台的论坛模板,专门设计用于宠物爱好者社区,尤其是猫咪爱好者。Discuz!
关于C++友元类的实现讲解
"C++友元类的实现讲解"C++中的友元类是一种特殊的类,它可以访问另一个类的私有成员。友元类的实现可以分为两种方式,一种是通过友元函数实现,另一种是通过友元类实现。
C++友元应用实例friend
七、友元和模板模板类可以声明为其他类的友元,以便访问其私有或受保护成员。模板函数也可以声明为友元,这在实现泛型算法时很有用。


