“非标准语法;使用'&'创建指向成员的指针“错误vs2015

时间:2016-07-20 09:55:03

标签: c++

我有这个功能:

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

无法找到解决方法。

2 个答案:

答案 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());