是可能的写可基于传递给此方法布尔参数类成员返回参考或拷贝(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)
一个函数只能有一个返回类型,所以不能,它不能完成.
目前还不清楚它可能起什么作用.
通常,您将提供返回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)