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

时间:2014-02-19 09:08:34

标签: c++ windows object pointers reference

我写了一个简单的c ++程序,我需要让用户登录。 我有一个main函数,在这个main函数中我调用另一个获取用户名的函数。 问题是,如果我从主要调用它,我会收到此错误 “表达式必须有一个指向对象的指针!”

这是我的代码:

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]; 我应该改变什么?

1 个答案:

答案 0 :(得分:2)

发生错误,因为您的代码中只有语法错误。我猜你要做的是:

wchar_t user_name[ULEN + 1];

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

  • 您创建一个变量user_name,它是单个unicode字符
  • 您可以通过引用
  • 将其传递给函数
  • 你把它转换为TCHAR*,所以你告诉编译器,这个变量内容一个指向内存的指针(它不是)< / LI>
  • 您使用无效数据调用GetUserName,这肯定会导致段错误。

您的代码可能应如下所示(我不知道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相同的文件夹中,会发生什么?