【发布时间】:2012-07-02 02:30:45
【问题描述】:
在以下代码中:
class SomeClass {
vector<int> i;
vector<bool> b;
public:
int& geti() {return i[0];}
bool& getb() {return b[0];}
};
如果你注释掉getb(),代码编译得很好。显然,返回对存储在向量中的 int 的引用没有问题,但你不能用 bool 来做到这一点。
这是为什么?
【问题讨论】:
-
考虑到现有的回复,您仍然可以通过使用
std::vector<bool>::reference作为函数的返回类型,而不是显式的bool&,来“挽救”您的代码。std::vector<bool>::reference是代理类,它充当打包std::vector<bool>的通用引用。