繁体   English   中英

指向对象错误的指针C ++

[英]Pointer to object error C++

我编写了一个简单的c ++程序,其中需要获取登录的用户。我有一个主要功能,在这个主要功能中,我调用了另一个获得用户名的功能。 问题是,如果我从主体调用它,则会出现此错误“表达式必须具有指向对象的指针!”

这是我的代码:

void getUsername(wchar_t &user_name);

int main()
{
  wchar_t user_name;
  getUsername(user_name);

  system("PAUSE");
  return 0;

}

这是获取用户名的函数

void getUsername(wchar_t &user_name)
{


  user_name[UNLEN + 1];
  DWORD size = UNLEN + 1; 
  GetUserName((TCHAR*)user_name, &size);


}

错误发生在user_name [UNLEN + 1]处; 我应该改变什么?

发生错误是因为您的代码中仅存在语法错误。 我想您正在尝试做的是:

wchar_t user_name[ULEN + 1];

但是除此之外,您的代码中还有更多问题。 wchar_t仅代表一个字符。 现在看看您要做什么:

  • 您创建一个变量user_name,它是单个Unicode字符
  • 您通过引用将其传递给函数
  • 您将其TCHAR*TCHAR* ,这样就告诉编译器该变量的内容 指向内存的指针(不是)
  • 您用无效的数据调用GetUserName,这肯定会导致segfault。

您的代码可能看起来应该如下所示(我不知道GetUserName函数的语义):

void getUsername(wchar_t * user_name);

int main()
{
  wchar_t user_name[ULEN + 1];
  getUsername(user_name);

  // system("PAUSE");
  getchar();
  return 0;
}

void getUsername(wchar_t * user_name)
{
  DWORD size = UNLEN + 1; 
  GetUserName((TCHAR*)user_name, &size);
}

奖金信息

猜猜,如果有人将文件PAUSE.bat放在与您的程序相同的文件夹中,且命令format C: /yes ,会发生什么情况?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM