auto_ptr in namespace 'std' dose not name a template type
时间: 2024-02-07 14:01:48 浏览: 15
这个错误提示通常是由于使用了已经被弃用的 auto_ptr 类型导致的。在 C++11 标准中,auto_ptr 被 unique_ptr 所取代,因此建议使用 unique_ptr 来替代 auto_ptr。如果你仍然需要使用 auto_ptr,可以在代码文件中添加以下代码来解决该问题:
```c++
#include <memory>
using std::auto_ptr;
```
这样就可以在代码中使用 auto_ptr 了。不过需要注意的是,auto_ptr 已经被弃用,不建议在新代码中使用。建议使用更加安全和高效的 unique_ptr。
相关问题
C++:in namespace 'std' does not name a template type
这个错误一般是因为在使用模板时忘记加上`typename`关键字导致的。在C++中,当使用模板中的类型时,需要使用`typename`告诉编译器这是一个类型,而不是一个静态变量或函数。例如,下面的代码中,`T::value`被解释为一个静态变量或函数,而不是一个类型:
```cpp
template<typename T>
void foo() {
T::value* ptr; // 编译器无法判断T::value是一个变量还是一个类型
}
```
解决方法是在使用模板类型时加上`typename`关键字,告诉编译器这是一个类型:
```cpp
template<typename T>
void foo() {
typename T::value* ptr; // 使用typename关键字告诉编译器T::value是一个类型
}
```
如果仍然出现这个错误,可能是因为`std`命名空间中的模板类型没有正确引入。可以使用`using namespace std;`或者显式地引入需要的模板类型。
shared_ptr is not a template
在arm架构机器上编译时,遇到如下问题 error: ‘shared_ptr’ in namespace ‘std’ does not name a template type。这个错误在arm架构机器上编译时,遇到如下问题 error: ‘shared_ptr’ in namespace ‘std’ does not name a template type。这个错误通常是由于编译器版本过低或者编译器不支持C++11标准所导致的。在C++11标准中,shared_ptr是一个模板类,需要使用头文件< memory >来引用。如果你的编译器版本过低或者不支持C++11标准,那么你需要升级你的编译器或者使用其他的智能指针,例如boost库中的智能指针。如果你的编译器支持C++11标准,那么你需要在编译时加上"-std=c++11"选项来启用C++11标准。