2

Room というクラスがあり、Room クラスには setPrice と表示機能があります。

部屋のオブジェクトをベクターに保存しました。

room.push_back(Room("r001", 1004, 2, "small"));
room.push_back(Room("r002", 1005, 2, "small"));
room.push_back(Room("r003", 2001, 4, "small"));
room.push_back(Room("r004", 2002, 4, "small"));

私の主な機能では、すべての部屋を表示する表示機能を作成します。これが私のコードです:

void displayRoom()
{
    vector<Room>::iterator it;
    for (it = room.begin(); it != room.end(); ++it) {
         *it.display(); // just trying my luck to see if it works
    }
}

ただし、Room の表示メソッドは呼び出しません。

Room(class) の display メソッド (引数なし) と setPrice(1 引数) メソッドを呼び出すにはどうすればよいですか?

4

4 に答える 4

12

逆参照は、メンバー アクセスよりも優先されます。括弧 ( (*it).display()) を追加することもできますが、これにはずっと前に (C で) 導入されたショートカットを使用する必要があります: it->display()

もちろん、ポインターと逆参照できる他のすべてのもの (他の反復子、スマート ポインターなど) にも同じ規則が適用されます。

于 2011-01-23T18:03:24.473 に答える
3

(*it).display()または単に試してみてくださいit->display()

于 2011-01-23T18:03:17.223 に答える
1

イテレータはポインタに少し似ています。したがって、次のいずれかが必要です。

it->display();

また:

(*it).display();
于 2011-01-23T18:03:32.387 に答える