hur.cn - 华软网

 热门搜索

LPCTSTR形参的函数为什么可以用CString对象传进去??

  作者:未知    来源:网络    更新时间:2011/3/25
如题!LPCTSTR是一个指针,CString对象不是指针啊!??
还有像 cdc::rectangle(LPCRECT lpRect),形参是指针指向Rect,使用时也是
Rectangle(CRect(10,60,66,90)); 
谢谢!
---华软 网友回答---
有人回答吗??
---华软网友回复---
并不是对象可以直接传给指针,而是类中重写了操作符;
如:
void CYourView::OnInitialUpdate()
{
   // CWnd::GetWindowRect() takes a LPRECT, but we can
   // simply pass our CRect object because of the LPRECT
   // cast operator in the CRect class.

   CRect rect;
   GetWindowRect(rect);

   // Similarly, CWnd::MoveWindow() takes a LPCRECT but
   // the LPCRECT cast operator is used implicitly:

   MoveWindow(rect, FALSE);

   // ... more code here ...
}

CString::operator LPCTSTR
operator LPCTSTR ( ) const;





---华软网友回复---
cdc::rectangle(LPCRECT lpRect),形参是指针指向Rect,使用时也是
Rectangle(CRect(10,60,66,90));  
=======================
MSDN上说了:Specifies the rectangle in logical units. You can pass either a CRect object or a pointer to a RECT structure for this parameter
---华软网友回复---
类中重载了操作符啊
CString::operator LPCTSTRoperator LPCTSTR ( ) const;

CRect::operator LPCRECT operator LPCRECT( ) const;


---华软网友回复---
楼上的都说了
---华软网友回复---
引用 2 楼 jixiang1983 的回复:
并不是对象可以直接传给指针,而是类中重写了操作符;
如:
void CYourView::OnInitialUpdate()
{
  // CWnd::GetWindowRect() takes a LPRECT, but we can
  // simply pass our CRect object because of the LPRECT
  // cast operator ……






我也看到了:例如CRect类里面有这一行
operator LPRECT() throw();
operator LPCRECT() const throw();

这是什么语句??
运算符重载,怎么没有函数类型,LPRECT是运算符吗??
---华软网友回复---
但是,在SetWindowText()中,传递&str好像在vc6.0中报错      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。