我有这个功能:
std::string Room::getUsersAsString(std::vector<User*> usersList, User * excludeUser)
{
std::string usersNames = " ";
for (int i = 0; i < usersList.size(); i++) {
if (usersList[i]->getUsername() != excludeUser->getUsername) {
usersNames.append(usersList[i]->getUsername);
usersNames.append(" ");
}
}
return usersNames;
}
每当我尝试运行程序时,都会出现以下错误:
non-standard syntax; use '&' to create a pointer to member
无法找到解决方法。
答案 0 :(得分:12)
如果您使用
if (usersList[i]->getUsername() != excludeUser->getUsername)
而不是
if (usersList[i]->getUsername() != excludeUser->getUsername())
您的编译器会认为您想要使用函数指针而不是方法本身,如果您想要使用函数指针,您仍然需要获取它的地址(使用&amp;)。
所以请确保在函数调用后不要忘记你的()!
答案 1 :(得分:6)
您在这些行中缺少函数调用括号:
if (usersList[i]->getUsername() != excludeUser->getUsername) {
和
usersNames.append(usersList[i]->getUsername);
尝试将其更改为:
if (usersList[i]->getUsername() != excludeUser->getUsername()) {
和
usersNames.append(usersList[i]->getUsername());