niet-standaard syntaxis; gebruik ‘&’ om een ​​verwijzing naar een lidfout te maken in Visual Studio 2015

Ik heb deze functie:

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;
}

Telkens wanneer ik het programma probeer uit te voeren, krijg ik de volgende foutmelding:

niet-standaard syntaxis; gebruik ‘&’ om een ​​verwijzing naar een lid te maken

Hoe kan ik dit oplossen?


Antwoord 1, autoriteit 100%

Als u

. gebruikt

if (usersList[i]->getUsername() != excludeUser->getUsername)

in plaats van

if (usersList[i]->getUsername() != excludeUser->getUsername())

je compiler zal denken dat je een functieaanwijzer wilt gebruiken in plaats van de methode zelf, en als je een functieaanwijzer had willen gebruiken, zou je nog steeds het adres ervan moeten krijgen (met &).

p>

Zorg er dus voor dat u uw () niet vergeet na een functie-aanroep!


Antwoord 2, autoriteit 41%

Je mist de functie-aanroep haakjes in deze regels:

if (usersList[i]->getUsername() != excludeUser->getUsername) {

en

usersNames.append(usersList[i]->getUsername);

Probeer ze hierin te veranderen:

if (usersList[i]->getUsername() != excludeUser->getUsername()) {

en

usersNames.append(usersList[i]->getUsername());

LEAVE A REPLY

Please enter your comment!
Please enter your name here

four × 4 =

Other episodes