我实际上相当确定我的问题的答案可以在先前创建的线程之一中找到。特别是,我必须在哪里以及为什么要放置“模板”和“类型名称”关键字?这对模板/类型名消歧有很好的解释。然而,我不知所措,因为我实际上无法将这个概念扩展到我的代码,这些代码是相互交互的类模板。
在这个线程中,我认为我看到了与我的代码中相同的错误。A<B>
为什么使用where B 是类来定义 typedef 的答案,而不是A<T>
where T 是我们实际想要的类型名模板。
尽管如此,我尝试了这些选项都无济于事。这是代码。谢谢您的帮助。
#include "testTemplateA.h"
template<typename A>
class testTemplateB {
public:
// none of these work
typedef testTemplateA<A> templateType;
typedef typename testTemplateA<A> templateType;
typedef typename testTemplateA<testTemplateB> templateType;
testTemplateB(templateType& TA) {}
~testTemplateB(void) {}
};
#include "testTemplateB.h"
template<typename A>
class testTemplateA
{
public:
testTemplateA(void) {}
~testTemplateA(void) {}
void callUponB(void) {
testTemplateB<A> g = testTemplateB<A>(this);
}
};