返回信息流这段代码得怎么改改呢?
#include <iostream>
using namespace std ;
template<typename T>
class MakeFinal
{
friend T;//这里老是编译不过
private:
MakeFinal() {}
~MakeFinal() {}
};
class FinalClass : virtual public MakeFinal<FinalClass>
{
public:
FinalClass() {}
~FinalClass() {}
};
int main()
{
return 0 ;
}
这是一条镜像帖。来源:北邮人论坛 / cpp / #43013同步于 2010/8/31
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
求教:关于模板和友元
kmplayer
2010/8/31镜像同步13 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
感觉没有什么问题啊...
【 在 kmplayer (就是喜欢她) 的大作中提到: 】
: 这段代码得怎么改改呢?
: #include <iostream>
: using namespace std ;
: ...................
vs2010下,编译成功了...
【 在 kmplayer 的大作中提到: 】
: 继续求教.
: T前面加不加"class"或"typename"都不行啊.
: ps:"感觉"不靠谱哈.
: ...................
晕死..
这也编译器相关?
我用的codeblocks
【 在 shenlei 的大作中提到: 】
: vs2010下,编译成功了...
: 【 在 kmplayer 的大作中提到: 】
: : 继续求教.
: ...................
没太看明白,这段代码想要干什么?
让子类成为父类的友元?
友元只能是函数或者类吧?
要是T是内嵌类型呢?也能编译过吗?
【 在 kmplayer 的大作中提到: 】
: 这段代码得怎么改改呢?
: #include <iostream>
: using namespace std ;
: ...................
代码的意思:在计数的时候比较牛 要是有个 静态变量 count 计算生成对象的个数 要是按这种继承 子类的count只算派生类的。。。
不知道friend T 这个T是个类型啊 。。。不知道有这么用法么。。。
friend T;//这里老是编译不过
把这一行去掉就可以了 多余的
#include <iostream>
using namespace std ;
template<typename T>
class MakeFinal
{
public:
static int getCount(){return count;}
static int count;
MakeFinal() {++count;}
~MakeFinal() {--count;}
};
template<typename T> int MakeFinal<T>::count = 0;
class FinalClass :public MakeFinal<FinalClass> {};
class FinalClass2 :public MakeFinal<FinalClass2>{};
int main()
{
FinalClass a;
cout<<FinalClass::getCount()<<endl;
FinalClass b;
cout<<FinalClass::getCount()<<endl;
FinalClass2 c;
cout<<FinalClass2::getCount()<<endl;
system("pause");
return 0 ;
}
拿你程序小改了一下