博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
weak_ptr 的 operator== 操作问题
阅读量:6835 次
发布时间:2019-06-26

本文共 1010 字,大约阅读时间需要 3 分钟。

hot3.png

继前面的问题:

遇到另一个问题:

#include 
#include
#include
using namespace std;#define MakeShared boost::make_shared#define SharedPtr boost::shared_ptr#define WeakPtr boost::weak_ptrtemplate
bool operator == (const WeakPtr
&lhs, const WeakPtr
&rhs) { return !(lhs < rhs) && !(rhs < lhs);}namespace hello_ns { struct MyObject { char dump; }; typedef vector
> MyObjectVector; MyObjectVector vec_objects; bool isExistObject(WeakPtr
wp_obj) { MyObjectVector::iterator iter = find(vec_objects.begin(), vec_objects.end(), wp_obj); return iter != vec_objects.end(); }}int main() { SharedPtr
obj = MakeShared
(); hello_ns::isExistObject(obj); return 0;}

上述代码编译是会出错的。错误信息:

1481656f01fd4c414dbd41ddcb566466c3d.jpg

即使我已在上面定义了WeakPtr比较的 operator==() 函数,但还是不行。

使用 clang++也是报错,错误的提示:

3741367b92e54cccf93bc4171f0f7414e2a.jpg

看来这不是编译器的bug。

但是,将 operator==() 函数移到 hello_ns 里面,就可以了。

c942229fd96269a914177a1b4db296e37b0.jpg

为什么会这样?不是在本层namespace中找不到的东西,就去上层寻找不?如果按这个规律,那么全局的 operator == 应该能被看到才是呀!

这个问题现象很难理解。

转载于:https://my.oschina.net/hevakelcj/blog/2120264

你可能感兴趣的文章
乐视2016年营收218.3亿元,净利润7.66亿元
查看>>
HAproxy
查看>>
nagios 服务端与客户端监控安装与详细配置,各配置文件详解
查看>>
centos 6.9 编译open jdk
查看>>
eval命令
查看>>
win7笔记本分区误删的数据寻回办法
查看>>
mybatis分页插件MicroPageInterceptor
查看>>
NSF共享服务
查看>>
判断语句:if 的格式
查看>>
iptables nat 表应用
查看>>
第1章 标准输入流 & 转换流 & 打印流
查看>>
python之Linux基础(九)
查看>>
Java的新项目学成在线笔记-day6(八)
查看>>
使用python创建简单字典,并对其中的值进行更新。
查看>>
Define contextual search for a table
查看>>
搭建FTP服务,实现三种方式的访问:1.匿名访问;2,本地用户访问;3虚拟用户访问。...
查看>>
systemverilog中的随机化方法
查看>>
VC 6.0下利用消息实现内部进程通讯
查看>>
计算机及移动设备管理软件,终端管理软件
查看>>
DRBD模块加载失败
查看>>