2016-07-20 498 views
0

私はこの機能を持っている:私は、プログラムを実行しようとするたびに「非標準の構文;使用 『&』メンバーへのポインタを作成するには、」エラーvs2015

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

Typo: 'excludeUser-> getUsername'は、' excludeUser-> getUsername() 'にする必要があります。 – juanchopanza

+1

'getUsername'の最後に'() 'がありませんか? – Galik

答えて

6

あなたは

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

代わりの

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

コンパイラがあなたの代わりにメソッド自体の関数ポインタを使用したいと思うでしょう、そしてあなたは、関数ポインタを使用するように思っているかどうを使用している場合(&を使用して)アドレスを取得する必要があります。

したがって、関数呼び出しの後であなたの()を忘れないようにしてください!

5

あなたはこれらの行では、関数呼び出しの括弧が欠落しています

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

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

が、この中にそれらを変更してみてください:

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

usersNames.append(usersList[i]->getUsername()); 
関連する問題