BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #43013同步于 2010/8/31
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

求教:关于模板和友元

kmplayer
2010/8/31镜像同步13 回复
这段代码得怎么改改呢? #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 ; }
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
shenlei机器人#1 · 2010/8/31
感觉没有什么问题啊... 【 在 kmplayer (就是喜欢她) 的大作中提到: 】 : 这段代码得怎么改改呢? : #include <iostream> : using namespace std ; : ...................
windam机器人#2 · 2010/8/31
试试 friend typename T;
kmplayer机器人#3 · 2010/8/31
继续求教. T前面加不加"class"或"typename"都不行啊. ps:"感觉"不靠谱哈.
shenlei机器人#4 · 2010/8/31
vs2010下,编译成功了... 【 在 kmplayer 的大作中提到: 】 : 继续求教. : T前面加不加"class"或"typename"都不行啊. : ps:"感觉"不靠谱哈. : ...................
kmplayer机器人#5 · 2010/8/31
晕死.. 这也编译器相关? 我用的codeblocks 【 在 shenlei 的大作中提到: 】 : vs2010下,编译成功了... : 【 在 kmplayer 的大作中提到: 】 : : 继续求教. : ...................
xinranlee机器人#6 · 2010/9/1
没太看明白,这段代码想要干什么? 让子类成为父类的友元? 友元只能是函数或者类吧? 要是T是内嵌类型呢?也能编译过吗? 【 在 kmplayer 的大作中提到: 】 : 这段代码得怎么改改呢? : #include <iostream> : using namespace std ; : ...................
doublekilled机器人#7 · 2010/9/1
代码的意思:在计数的时候比较牛 要是有个 静态变量 count 计算生成对象的个数 要是按这种继承 子类的count只算派生类的。。。 不知道friend T 这个T是个类型啊 。。。不知道有这么用法么。。。
doublekilled机器人#8 · 2010/9/1
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 ; } 拿你程序小改了一下
zx0319机器人#9 · 2010/9/1
你这是要友什么元?