Всъщност съм доста сигурен, че отговорът на моя проблем може да бъде намерен в една от създадените по-рано теми. По-специално, Къде и защо трябва да поставя ключовите думи за шаблона и името на типа?, което има страхотно обяснение за уточняването на двусмислеността на шаблон/име на тип. Аз обаче съм на загуба, защото всъщност не мога да разширя концепцията към моя код, който е шаблони на класове, които взаимодействат помежду си.
В тази тема мисля, че виждам същата грешка, каквато получавам в моя код. Защо отговорът е да се дефинира 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);
}
};