boost1.75 json:不同的类重载模板函数经常发生重定义错误

本文探讨了在使用Boost1.75的JSON库时如何避免因重载Value_to_tag和value_from_tag导致的多重定义错误。通过在类定义中引入命名空间并正确使用inline关键字,可以有效解决此类问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

不同的类重载模板函数经常发生重定义错误
在学习使用BOOST1.75 json时,
经常重载Value_to_tag,value_from_tag 发生多重定义错误

需要在类的定义头文件内增加namespace 防止多重定义
特别注意 inline 的使用

namespace myNamespace{//非常重要

class myClass{
...
	friend int tag_invoke(const value_from_tag&, value& jv, const myClass& title);
	....
	};
	

inline int tag_invoke(const value_from_tag&, value& jv, const CTitleViewHistorySerial& title){}

template<class T>
T tag_invoke(const value_to_tag<T>&, const value& jv){};//一般化模板定义

template<class T>  //不能少
myclass tag_invoke(const value_to_tag<T>&, const value& jv){};//特化模板定义



}//命名空间结束
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值