對於下面的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