对于下面的C++代码,我得到一个编译器错误:的std :: auto_ptr的错误
class Mkt
{
int k;
public:
Mkt(int n): k(n)
{
throw;
}
~Mkt()
{
cout<<"\n\nINSIDE Mkt DTOR function:\t"<<endl;
}
void func1()
{
cout<<"\n\nINSIDE FUNC1 function....value of k is:\t"<<k<<endl;
}
};
int main(int argc, char* argv[])
{
try
{
std::auto_ptr<Mkt> obj(new Mkt(10)); //no implicit conversion
obj.func1(); //error C2039: 'func1' : is not a member of 'std::auto_ptr<_Ty>'
}
catch(...)
{
cout<<"\n\nINSIDE EXCEPTION HANDLER..........."<<endl;
}
return 0;
}
我无法理解为什么我收到错误C2039?我正在使用VS 2008编译器。
请帮忙。 谢谢
为什么有关隐式转换的评论?您并未请求隐式转换。 – 2011-03-30 09:15:15
@ Kiril-Kirov同样,当我通过将auto_ptr引入Mkt *来更改我的代码时:'std :: auto_ptr obj(new Mkt(10)); \t \t obj-> func1();'我再次得到以前的错误。我试图将函数调用为:'obj.func1(); '但仍然有同样的错误。我无法理解这个 –
XMarshall
2011-03-30 09:16:44
@ Tomalak-Geretkal是的,我试图提醒自己我没有要求隐式转换的语法。这就是为什么评论( - : – XMarshall 2011-03-30 09:18:59