我知道在诸如此类的前向声明之后
class Foo;
我可以将变量声明为Foo*
or Foo&
, 但不是Foo
.
如果我有一个模板化类和实例化
template<class T>
class Bar {
public:
T baz;
};
...
Bar<Foo> v;
上述规则如何适用? Foo 是否必须在该类时完全声明(而不是仅向前声明)Bar
被定义,或者在该点v
被宣布?或者也许只需要在某一时刻Bar<Foo>
在源文件中的任何地方使用,而所有其他文件则不是?还有别的事吗?
Thanks
Bar<Foo>
需要完整的Foo
定义,因为它包含类型的数据成员Foo
。在这种情况下,您无法转发声明。在这方面,Bar<Foo>
相当于
class BarFoo
{
public:
Foo baz;
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)