关于智能指针的使用
#include<iostream>#include<string>
#include<memory>//智能指针的头文件
int main()
{
std::auto_ptr<std::string>pf={ std::auto_ptr<std::string>(new std::string("@@@@@@@")) ,
std::auto_ptr<std::string>(new std::string("#######")) ,
std::auto_ptr<std::string>(new std::string("*************")) ,
std::auto_ptr<std::string>(new std::string("%%%%%%%%%%")) ,
std::auto_ptr<std::string>(new std::string("$$$$")) };
std::shared_ptr<std::string>pw;
pw=pf;
std::cout<<"The nominees for best avian baseball fp are\n";
for(int i=0; i<5; i++)
{
std::cout<<*pf<<"\n";
}
std::cout<<"The winnwr is: "<<*pw<<"\n";
std::cin.get();
return 0;
}
照着书上打的代码,为什么会报错
|In function 'int main()':|
|15|error: cannot bind 'std::auto_ptr<std::basic_string<char> >' lvalue to 'std::auto_ptr<std::basic_string<char> >&&'|
|282|error: initializing argument 1 of 'std::shared_ptr<_Tp>& std::shared_ptr<_Tp>::operator=(std::auto_ptr<_Tp1>&&) '|
||=== Build failed: 2 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
你确定照着书弄的?拍张书的图上来 本帖最后由 行客 于 2019-3-6 10:37 编辑
本帖莫名其妙需要审核才通过,清除重复内容 指针转换有问题,请注意注释:
#include<iostream>
#include<string>
#include<memory>//智能指针的头文件
int main()
{
std::auto_ptr<std::string>pf={ std::auto_ptr<std::string>(new std::string("@@@@@@@")) ,
std::auto_ptr<std::string>(new std::string("#######")) ,
std::auto_ptr<std::string>(new std::string("*************")) ,
std::auto_ptr<std::string>(new std::string("%%%%%%%%%%")) ,
std::auto_ptr<std::string>(new std::string("$")) };
std::shared_ptr<std::string> pw(pf.get()); //将pf转换为普通指针后,赋值给pw
//pw = pf;
std::cout<<"The nominees for best avian baseball fp are\n";
for(int i=0; i<5; i++)
{
std::cout<<*pf<<"\n";
}
std::cout<<"The winnwr is: "<<*pw<<"\n";
std::cin.get();
return 0;
}
页:
[1]