【发布时间】:2014-12-16 05:32:46
【问题描述】:
我希望他下面的代码会出错,但Compiles ok
class B;
template<typename T>
class A
{
private:
A()
{
T b;
b.print();
}
void print()
{
}
};
class B: public A<B>
{
};
A如何访问私有成员,B的构造函数A()和print()?
【问题讨论】:
-
你看到你的 'Compiles ok' 链接了吗?
-
因为你还没有实例化模板类。在您强制 A 为具有特定版本的
T的 A 生成代码之前,您无法在 A 中生成编译器错误。 -
你必须看到Compiles ok链接。它根本不编译。
-
将研究标准。链接编辑创建B实例后报错,不编译成功
标签: c++ inheritance access-modifiers