一个与模板有关的问题
#include <iostream.h>
template <class T>
class X
{
struct str
{ char c; };
public:
int i;
};
template <class Y>
class A
{
public:
X<Y>::str p;
};
main ()
{
}
在BC++ 5.02中,无法编译通过,错误信息为:无法存取 X<Y>::str p,我想也是,因为struct是私有的,但是在 BCB 5。0 中却编译通过,在 VC++ 6 也一样,真是无法明白。
但是等我删除了一些与,模板有关的语句后,再编译就无法通过,例如像这样:
class A {
public:
X::str p;
}
谁能告诉我为什么模板就能存取私有结构?这个到底是不是编译器的错误?