爲什麼我MSVS2008編譯器不能找到隱式類型轉換SRCT - 調用函數時> DSTT - > LPCSTR?這在其他情況下工作正常。我不喜歡隨時編寫手動轉換,如下所示:MyFunc((LPCSTR)src)。我錯過了什麼?MSVS2008編譯器不能找到隱式類型轉換:無法從「SRCT」轉換參數1「DSTT」
MyFunc(src);
1> d:\測試\ TEST.CPP(39):錯誤C2664: 'MYFUNC':不能從 'SRCT' 來轉換參數1 'DSTT'
#include <windows.h>
#include <tchar.h>
class SrcT
{
public:
operator LPCSTR() const
{
return "dummy";
}
};
class DstT
{
public:
DstT() : m_value(NULL) {};
DstT(LPCSTR value) {m_value = value; }
DstT& operator=(LPCSTR value) { m_value = value; return *this; }
LPCSTR m_value;
};
void MyFunc(DstT dst)
{
}
int _tmain(int argc, _TCHAR* argv[])
{
SrcT src;
DstT dst(src);
DstT dst2;
dst2 = src;
MyFunc((LPCSTR)src);
MyFunc(src);
return 0;
}
我不知道答案,但我可以說用g ++ errs編譯的類似程序:「x.cc:40:錯誤:從'SrcT'轉換爲非標量類型'DstT'請求」 –