将 LPWSTR& foo 返回给函数

Returning a LPWSTR& foo to a function

本文关键字:函数 返回 foo LPWSTR      更新时间:2023-10-16

这一点是行不通的。如何解决它。我知道 CStrings 在调用函数后离开堆栈。是任何类型的字符串我C++ std:字符串等。它的行为类似于 C# 字符串。我如何让它工作?

void Dialog1::GetOrderingKey(LPWSTR& lpOrderingKey)
{
   CString OrderingKey;
   m_Result.GetWindowText(OrderingKey);
  lpOrderingKey = OrderingKey.GetBuffer(0);
}
  LPWSTR lpOrderingKey;
  GetOrderingKey(lpOrderingKey);
  int returnValue = lpfnDllOrderingCodeDataW(lpSerialNumber, lpOrderingKey, data, _countof(data));

只需从GetOrderingKey()返回一个 CString :

CString Dialog1::GetOrderingKey()
{
   CString OrderingKey;
   m_Result.GetWindowText(OrderingKey);
   return OrderingKey;
}
CString ordering_key = GetOrderingKey();
int returnValue = lpfnDllOrderingCodeDataW(lpSerialNumber, (LPCWSTR) ordering_key, data, _countof(data));

一种直接而最简单的方法是将其声明为静态。

void Dialog1::GetOrderingKey(LPWSTR& lpOrderingKey)
{
   static CString OrderingKey;