问一个关于模板类 成员函数特例的问题

IT保安 2015-06-29 03:38:48
#include <iostream>
#include "myclass.h"

using namespace std;

char * _strcat(char* pszStrA,char * pszStrB);

template<typename T>
class Tree
{
public:
bool deleteElement(const int& element);
};

template<>
bool Tree<int> ::deleteElement(const int& element) //用基本类型就过,用自定义类型就挂
{
return false;
}

int main()
{
//myclass my;
int iNum =5;
Tree<int> a;
a.deleteElement(iNum);

return 0;
}


给类模板做成员函数特例的时候,碰到这个问题,我的编译器是vs2008,
模板特例里只要写我自定义的类,就会报错("public: bool __thiscall Tree<int>::deleteElement(int const &)" (?deleteElement@?$Tree@H@@QAE_NABH@Z),该符号在函数 _main 中被引用)

只要写基本类型,就没有问题!

同样的代码,写在6.0里面却是可以编译通过的!

因此我估计是vs2008的问题,但不知道在哪里设置,往高手帮助一下!
...全文
85 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yshuise 2015-06-29
  • 打赏
  • 举报
回复
楼主应该做的是类特化,不是函数特化。
IT保安 2015-06-29
  • 打赏
  • 举报
回复
我要做的是模板特例啊
  • 打赏
  • 举报
回复
你把

template<>
bool Tree<int> ::deleteElement(const int& element)  
{
    return false;
}

改成

template<typename T>
bool Tree<T> ::deleteElement(const int& element)  
{
    return false;
}

就行了,高版本的编译器放弃了一些低版本的特征,加强了语法、语义,所以编译不过。

64,318

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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