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