error : ‘shared_ptr’ in namespace ‘std’ does not name a template type

error : ‘shared_ptr’ in namespace ‘std’ does not name a template type

头文件应该包含<memory>而不是<memory.h>

memory.h是老的头文件。
memory是新的C++头文件。在名字空间std中。

旧的C++头文件名如<iostream.h>将会继续被支持,尽管它们不在官方标准中。这些头文件的内容不在名字空间std中。

· 新的C++头文件如<iostream>包含的基本功能和对应的旧头文件相同,但头文件的内容在名字空间std中。(在标准化的过程中,库中有些部分的细节被修改了,所以旧头文件和新头文件中的实体不一定完全对应。)

· 标准C头文件如<stdio.h>继续被支持。头文件的内容不在std中。

· 具有C库功能的新C++头文件具有如<cstdio>这样的名字。它们提供的内容和相应的旧C头文件相同,只是内容在std中。

所有这些初看有点怪,但不难习惯它。最大的挑战是把字符串头文件理清楚:<string.h>是旧的C头文件,对应的是基于char*的字符串处理函数;<string>是包装了std的C++头文件,对应的是新的string类(看下文);<cstring>是对应于旧C头文件的std版本。如果能掌握这些(我相信你能),其余的也就容易了。

另外需要注意的是只有error : ‘shared_ptr’才是使用此方法,其他的 ‘std’ does not name a template type需要查找对应头文件。

摘抄自:

请问 #include <memory.h> 与 #include <memory> 有何区别?-CSDN论坛

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值