成员模板的错误?? 求救(很简单的一个问题)

DEnzllWang 2003-11-13 11:48:56
class Love
{
public:
template <typename _T>
_T* Kiss(size_t szLen);
};

...

int main(void)
{
...
Love lover;
lover.Kiss<int>(32);//报错, 说是error C2062: type 'int' unexpected
...
}

在VC中编译出错.

...全文
97 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
aflyinghorse 2003-11-18
  • 打赏
  • 举报
回复
class Love
{
public:
template <typename _T>
_T* Kiss(size_t szLen){std::cout << "okokok";};
};
int main(void)
{

Love lover;
lover.Kiss<int>(32);
}
这段程序在dev-cpp下可以通过。

下面这段程序要加template作为限定词,因为参数bs依赖于模板参数N
template<int N>
void printBitset (std::bitset<N> const& bs)
{
std::cout << bs.template to_string<char,char_traits<char>,
allocator<char> >();
}
fierygnu 2003-11-18
  • 打赏
  • 举报
回复
template作为限定词,表示Kiss是lover的成员模板函数。
noirchloe 2003-11-18
  • 打赏
  • 举报
回复
这是什么语法........
fierygnu 2003-11-18
  • 打赏
  • 举报
回复
lover.template Kiss<int>(32);
这样VC6编译认吗?
noirchloe 2003-11-14
  • 打赏
  • 举报
回复
这是VC6的鸟问题,他对摸板支持几乎为0,可悲...........
我在VC7,也就是VC.NET测试标准的C++语言,发现还是有很多摸板的方法不支持,比如:摸板摸板参数,(不知道是不是我的版本太老!?)
所以在VC里面写泛刑程序很难,写不出很多标准的功能,即使写出来了的东西也是猫不象狗不象的...........
如果一定提要写的话,换编译器,KAI C++好象可以

或者就是用“短歌”的方法,许多VC的STL实现都是这样的,但是很难看,而且没有体现泛型,不是吗?
fierygnu 2003-11-14
  • 打赏
  • 举报
回复
也就是说,编译器必须根据函数参数推导出模板参数,才能对该函数模板进行实例化。
fierygnu 2003-11-14
  • 打赏
  • 举报
回复
这个跟VC应该没关系。在C++里,函数重载必须是参数不同,或者是const/非const不同。楼主的代码里,Kiss函数模板只是返回值类型不同,是不对的。
短歌如风 2003-11-13
  • 打赏
  • 举报
回复
你用的是VC6吧?
VC6对模板成员的显式特化支持很差。改为:

class Love
{
public:
template <typename _T>
_T* Kiss(size_t szLen, _T*);
};

...

int main(void)
{
...
Love lover;
lover.Kiss(32, (int*)0);
...
}
DEnzllWang 2003-11-13
  • 打赏
  • 举报
回复
Help
DEnzllWang 2003-11-13
  • 打赏
  • 举报
回复
Help
David2008 2003-11-13
  • 打赏
  • 举报
回复
lover.Kiss(32);

24,861

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧