【发布时间】:2009-10-08 11:35:54
【问题描述】:
我遇到了这个例子here:
#include <vector>
#include <cstddef>
template<typename Tag>
class Ref_t {
std::size_t value;
friend Tag& element(Ref_t r, std::vector<Tag>& v) {
return v[r.value];
}
friend const Tag& element(Ref_t r, const std::vector<Tag>& v)
{
return v[r.value];
}
public:
// C'tors, arithmetic operators, assignment
};
struct A{};
struct B{};
typedef Ref_t<A> ARef_t;
typedef Ref_t<B> BRef_t;
int main() {
std::vector<A> va;
ARef_t ar;
A& a = element(ar, va);
}
那么问题是为什么我们在 Ref_t 类中需要两个 friend element 函数?
【问题讨论】:
标签: c++