【发布时间】:2016-05-25 19:41:40
【问题描述】:
为什么我不能从类的模板方法访问受保护的成员?
我可能在这里遗漏了一些特殊的朋友声明,但它让我无法理解。我觉得我应该能够做到这一点。
错误是:
error: ‘char* ClassB<char>::a’ is protected
示例来源:
template<typename T>
class ClassA;
template<typename T>
class ClassB {
protected:
T* a;
public:
ClassB()
: a(0) {}
template<typename U>
ClassB(const ClassB<U>& other)
:
// error: ‘char* ClassB<char>::a’ is protected
a(other.a) {}
};
////
template<typename T>
class ClassA : public ClassB<T> {
public:
ClassA() {}
};
////
namespace name {
typedef ClassA<char> A;
typedef ClassB<const char> B;
}
int main() {
name::A a;
name::B b = a;
return 0;
}
【问题讨论】: