C++の新機能、どこが間違っているのかわからない。まだptrsの周りに私の頭を包んでいる。ベクトル内のオブジェクトへのポインタを見つけて返す
私はプロファイルオブジェクトのベクトルを持っています。私はそのプロパティの1つに基づいて特定のオブジェクトを探したい。それから私はそのオブジェクトを返したい。オブジェクトのコピーや何かを作成したくないので、特定のオブジェクトへのポインタを返す必要があると思いますか?
Profile* profileManager::getProfile(const std::string& name)
{
std::vector<Profile>::iterator it = std::find_if(allProfiles.begin(), allProfiles.end(), [name](Profile &p) { return p.getName() == name; });
return it != allProfiles.end() ? *it : nullptr;
}
私は修正する方法がわからないことがいくつか間違ってあります:
は、ここに私のコードです。一致が見つからない場合はnullを返し、呼び出し元に処理させる場合はどうすればいいですか?私は現時点で互換性のないタイプを取得していると私はビット周りにそれを変更しようとしたが、運がなかった。それは正しいタイプではないとも言います。見つかった場合、どのようにプロファイルへのポインタを返すようにすればよいですか?
ありがとうございました。ありがとう。
'* it'が' Profile'であれば、 'Profile *'はどのように得られますか?それ以外は、私には正しいと思う。 –
完全な意味がある、私はptrsについての私の頭の読書を壊している。 – user3238415
これはプロファイルptrsのベクトルではなく、プロファイルオブジェクトのベクトルだけであるため、プロファイルオブジェクトを返す必要があります。私は参考にこれを行い、余分なコピーが作られず、すべてがうまくいきますか? – user3238415