通过方法返回副本或引用

Mar*_*cin 0 c++

是可能的写可基于传递给此方法布尔参数类成员返回参考或拷贝(getMember(布尔getCopy))的方法?

class Class
{

  const std::vector<int>& getMember() { return _member; }
  const std::vector<int> getCopyOfMember() { return _member; }
  ??? getMember(bool getCopy) { ??? }
  std::vector<int> _member;
}
Run Code Online (Sandbox Code Playgroud)

我可以用:

Class cl;
const std::vector<int>& myVector = isCopyNeeded ?
    cl.getCopyMember() :
    cl.getMember();

for (auto elem : myVector)
   ...
Run Code Online (Sandbox Code Playgroud)

Hovewer我想要这样的东西:

for (auto elem : cl.getMember(isCopyNeeded))
  ...
Run Code Online (Sandbox Code Playgroud)

mol*_*ilo 9

一个函数只能有一个返回类型,所以不能,它不能完成.
目前还不清楚它可能起什么作用.

通常,您将提供返回const引用的函数:

const std::vector<int>& getMember() const { return _member; }
Run Code Online (Sandbox Code Playgroud)

然后您的用户可以选择是否需要参考:

const std::vector<int>& aReference = anObject.getMember();
Run Code Online (Sandbox Code Playgroud)

或副本:

std::vector<int> aCopy = anObject.getMember();
Run Code Online (Sandbox Code Playgroud)