来个大神帮帮忙!很简单的,该怎么解决
来个大神帮帮忙!!!!!很简单的
#include <iostream>
using std::cout;
using std::endl;
template <typename T>
class ManyFriend
{
private:
T item;
public:
ManyFriend(const T & i):item(i){}
template<class P>
friend void Showp(const P & p);
};
template <typename P>
void Showp(const P & p)
{
cout<<p.item<<endl;
}
int main()
{
ManyFriend<int> hfi1(10);
ManyFriend<int> hfi2(20);
ManyFriend<double> hfdb(10.5);
cout<<"hfi1: ";
Showp(hfi1);
cout<<"hfdb: ";
Showp(hfdb);
return 0;
}
编译不过去
error C2667: 'Showp' : none of 2 overload have a best conversion
error C2668: 'Showp' : ambiguous call to overloaded function
谁帮我搞定
不知道是不是我的编译器问题
我用的是VC6.0
------解决方案--------------------
编译器的问题,VC 6.0 本身对 c++ 标准的支持就不好,特别是对于后来加入 C++ 标准的标准模板库,会有很多类似楼主遇到的编译问题。
现在都 VC 11.0(VC2012)了,强烈建议楼主更新下你的开发环境。
你的程序没有任何问题,下面是 codepad 上的结果:
http://codepad.org/zojznvOH
希望对楼主有用,Good Luck!
------解决方案--------------------
vs2010 是没有问题的。
------解决方案--------------------
换编译器吧。
珍惜生命,远离VC6!
#include <iostream>
using std::cout;
using std::endl;
template <typename T>
class ManyFriend
{
private:
T item;
public:
ManyFriend(const T & i):item(i){}
template<class P>
friend void Showp(const P & p);
};
template <typename P>
void Showp(const P & p)
{
cout<<p.item<<endl;
}
int main()
{
ManyFriend<int> hfi1(10);
ManyFriend<int> hfi2(20);
ManyFriend<double> hfdb(10.5);
cout<<"hfi1: ";
Showp(hfi1);
cout<<"hfdb: ";
Showp(hfdb);
return 0;
}
编译不过去
error C2667: 'Showp' : none of 2 overload have a best conversion
error C2668: 'Showp' : ambiguous call to overloaded function
谁帮我搞定
不知道是不是我的编译器问题
我用的是VC6.0
------解决方案--------------------
编译器的问题,VC 6.0 本身对 c++ 标准的支持就不好,特别是对于后来加入 C++ 标准的标准模板库,会有很多类似楼主遇到的编译问题。
现在都 VC 11.0(VC2012)了,强烈建议楼主更新下你的开发环境。
你的程序没有任何问题,下面是 codepad 上的结果:
http://codepad.org/zojznvOH
希望对楼主有用,Good Luck!
------解决方案--------------------
vs2010 是没有问题的。
------解决方案--------------------
换编译器吧。
珍惜生命,远离VC6!