例如,我得到了一个如下所示的类:
template <typename T>
class Test {
public:
T* t;
...
};
那么(如何)我可以扩展与此类似的类吗?
class TestImplement : Test<TestImplement::TestInner> // the TestInner class is defind in the class {
class TestInner {};
...
};
由于TestInner
是在模板需要的地方之后定义的,所以这段代码是非法的,前向声明也是无用的。
好吧,您根本无法做到这一点,而且您已经指出了原因。
更多地考虑逻辑而不是语法,因为基类定义可能会根据其模板参数的不同而不同,并且由于基类定义很可能会影响TestInner
工作方式,因此您正在尝试创建一个循环依赖在我们的物理现实中是不可能的。
您可以尝试使用TestImplement
作为模板参数(CRTP!),然后typename TemplateArgument::TestInner
从基础内部查找,但即使这样做有效,我也怀疑其清晰度。
我会改用非嵌套类。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句