社区
工具平台和程序库
帖子详情
如何实现操作符<<重载的函数模板特化
banjo
2003-08-28 11:06:08
那位高人指点一下?编译器爆出了我不理解的错误
...全文
79
12
打赏
收藏
如何实现操作符<<重载的函数模板特化
那位高人指点一下?编译器爆出了我不理解的错误
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hpho
2003-08-28
打赏
举报
回复
enum FLX_QUERY_MODE{
SimpleMode=0,
RowBindMode=1,
SetBindMode=2,
};
class sss{
public:
bool operator<<(FLX_QUERY_MODE mode){return true;}
template<class _Fn>//接受一个函数指针
bool operator<<(_Fn _Op){
_Op(1);
return true;
}
};
banjo
2003-08-28
打赏
举报
回复
这两个操作符包含在一个类中的
enum FLX_QUERY_MODE
{
SimpleMode=0,
RowBindMode=1,
SetBindMode=2,
};
class sss
{
template<>//接受一个枚举变量,这边该怎么写呢?
是 bool operator<< <FLX_QUERY_MODE>(FLX_QUERY_MODE mode){...};
或者应该是bool operator<< (FLX_QUERY_MODE mode){...};
template<class _Fn>//接受一个函数指针
bool operator<<(_Fn _Op)
{
op(1)
};
}
两种写法在调用时编译器报错了
error C2593: 'operator <<' is ambiguous
hpho
2003-08-28
打赏
举报
回复
class sss
{
bool operator<< (FLX_QUERY_MODE mode){...};
template<class _Fn>//接受一个函数指针
bool operator<<(_Fn _Op)
{
op(1)
};
}
banjo
2003-08-28
打赏
举报
回复
enum FLX_QUERY_MODE
{
SimpleMode=0,
RowBindMode=1,
SetBindMode=2,
};
banjo
2003-08-28
打赏
举报
回复
这两个操作符包含在一个类中的
class sss
{
template<FLX_QUERY_MODE T>//接受一个枚举变量
bool operator<< (T mode){...};
template<class _Fn>//接受一个函数指针
bool operator<<(_Fn _Op)
{
op(1)
};
}
banjo
2003-08-28
打赏
举报
回复
template<FLX_QUERY_MODE T>//接受一个枚举变量
bool operator<< (T mode){...};
template<class _Fn>//接受一个函数指针
bool operator<<(_Fn _Op)
{
op(1)
};
error C2061: syntax error : identifier 'T'
e:\项目\数据库\dbwrap5\dbwrap\flxdb\flxdb.h(269) : error C2805: binary 'operator <<' has too few parameters
sevecol
2003-08-28
打赏
举报
回复
什么情况下扩展主模板?
什么情况下使用特例华?
把你的目的具体讲清楚。
banjo
2003-08-28
打赏
举报
回复
template<>//接受一个函数指针
bool sss::operator<< <_Fn>(_Fn _Op)
{
return _Op(1);
};
而且_Fn _Op
可能为一个仿函数,怎么实现呢?
banjo
2003-08-28
打赏
举报
回复
还是不行啊
我还定义了另外一个
enum FLX_SQL
{
BeginSql=0,
EndSql=1,
};
CFlxQuery& operator<<(FLX_SQL fs);
error C2785: 'bool __thiscall CFlxQuery::operator <<(T)' and 'class CFlxQuery &__thiscall CFlxQuery::operator <<(enum FLX_SQL)' have different return types
banjo
2003-08-28
打赏
举报
回复
还是不行啊
我还定义了另外一个
enum FLX_SQL
{
BeginSql=0,
EndSql=1,
};
CFlxQuery& operator<<(FLX_SQL fs);
error C2785: 'bool __thiscall CFlxQuery::operator <<(T)' and 'class CFlxQuery &__thiscall CFlxQuery::operator <<(enum FLX_SQL)' have different return types
sevecol
2003-08-28
打赏
举报
回复
typedef bool (*_Fn)(int);
enum FLX_QUERY_MODE
{
SimpleMode=0,
RowBindMode=1,
SetBindMode=2,
};
class sss
{
public:
template<typename T>
bool operator<<(T t);
};
template<typename T>
bool sss::operator<<(T t)
{
return true;
};
template<>//接受一个函数指针
bool sss::operator<< <_Fn>(_Fn _Op)
{
return _Op(1);
};
sevecol
2003-08-28
打赏
举报
回复
什么情况下扩展主模板?
什么情况下使用特例华?
实验10
函数
模板
1
3. **
函数
模板
特化
** 当
函数
模板
不能很好地处理某些特殊类型时,可以进行
模板
特化
。
特化
是指为特定的类型提供一个专门的
函数
实现
,覆盖原有的
模板
。在实验内容中,我们不需要对`max`
函数
进行
特化
,因为我们已经为每...
自己动手编写string类
根据提供的文件信息,我们可以从中提取出...这不仅有助于理解标准string的工作原理,还能加深对C++面向对象编程的理解,特别是关于封装、构造
函数
、析构
函数
、
操作符
重载
、友元
函数
以及类成员
函数
设计等方面的知识。
C++ Templates Complete Guide 2nd
书中详细阐述了C++
模板
的各个方面,包括
函数
模板
、类
模板
、
模板
元编程、
模板
特化
、
模板
重载
等核心概念。 在C++编程中,
模板
是一种强大的工具,允许程序员创建泛型代码,即可以在多种数据类型上工作的代码。
函数
模板
...
计算机等级考试二级C++复习资料.pdf
文件中的代码片段体现了面向对象编程(OOP)的一些核心概念,如封装(使用类封装数据和行为),继承(通过派生类继承基类的属性和行为),多态(通过
函数
重载
和
操作符
重载
实现
)等。 9. 循环结构(Loop Structures...
C++ Primer第四版【中文高清扫描版】.pdf
11.
模板
与泛型编程,包括
函数
模板
、类
模板
和
模板
特化
的使用。 12. 面向对象编程技术,如异常处理、命名空间、多重继承、虚继承等。 13. 高级主题,包括运行时类型识别、类成员指针、嵌套类、联合和局部类等。 此外...
工具平台和程序库
24,855
社区成员
27,329
社区内容
发帖
与我相关
我的任务
工具平台和程序库
C/C++ 工具平台和程序库
复制链接
扫一扫
分享
社区描述
C/C++ 工具平台和程序库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章