На самом деле я совершенно уверен, что ответ на мою проблему можно найти в одной из ранее созданных тем. В частности, Где и почему я должен помещать ключевые слова шаблона и имени типа? в котором есть отличное объяснение устранения неоднозначности шаблона/имени типа. Однако я в недоумении, потому что на самом деле я не могу расширить концепцию своего кода, который представляет собой шаблоны классов, которые взаимодействуют друг с другом.
В этом потоке, я думаю, я вижу ту же ошибку, что и в моем коде. Почему ответ заключается в определении typedef с использованием A<B>
, где B — класс, а не A<T>
, где 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);
}
};