C ++ Template类继承另一个模板类,模板指定的输入类型为[duplicate]
可能重复:
GCC问题:使用依赖于模板参数的基类成员
为什么当VS没有时,GCC在模板中需要额外的声明?
为什么派生模板类无法访问基本模板类
iphone编译器继承了模板化的基类,传递类型没有及时扩展(只看)
抱歉这个令人困惑的标题,我能想出最好的。
这里有一些代码来说明我的问题......
基本模板类:
template<class T> class TestBase
{
public:
int someInt;
};
试图用另一个模板类继承TestBase ...
这在编译时得到“someInt未在此范围内声明”:
template<class X> class TestSub : public TestBase<X>
{
void testf()
{
someInt = 0; //Error: "someInt was not declared in this scope"
}
};
B)
这很好用(不同之处在于我明确指定了TestBase的模板输入)
template<class X> class TestSub : public TestBase<string>
{
void testf()
{
someInt = 0;
}
};
为什么(A)的TestSub没有像(B)中那样正确地继承someInt?
提前致谢。
没有找到相关结果
已邀请:
1 个回复
悲帽慑彤电
说的
你也可以用
关键是编译器不会假设一个名称依赖于一个模板参数,它必须知道它在将该检查推迟到实例化时间之前。对于实验,请参阅引入全局someInt时会发生什么。