Сам шаблон C ++

Я пытаюсь создать класс Info<P,S> который содержит указатель на другой объект типа Info<S,P>, У меня есть следующий код.

template <class P, class S>
class Info {
….
public:
Info(…, Info<S,P>* parentInfo) : …, parentInfo(parentInfo)
{}
…
private:
Info<S, P> *parentInfo;
};

….

typedef Info<ActualP, ActualS> OneInfo;
typedef Info<ActualS, ActualP> OtherInfo;
…
OtherInfo* parentInfo =…;
OneInfo info(…, parentInfo);

Это не компилирует и говорит, что конструктор не является допустимым (при вызове).

Я полагаю, что это приведет к бесконечной рекурсии при попытке решить. Я прав? Каковы альтернативы для реализации этого намерения ссылки Info<S,P> от Info<P,S>?

0

Решение

использование имяТипа чтобы ссылаться на тип, который зависит от параметра шаблона:

template <class T>
class Info
{
public:
Info() : parentInfo(NULL) {}

Info(Info<typename T> *info) :
parentInfo(info)
{
}

private:
Info<typename T> *parentInfo;
};

int _tmain(int, _TCHAR**)
{
Info<int> parent;
Info<int> child(&parent);
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]