C++ C++;模板类自引用

C++ C++;模板类自引用,c++,templates,self-reference,C++,Templates,Self Reference,我正在尝试创建一个类Info,它包含指向另一个Info类型的对象的指针。我有以下代码 template <class P, class S> class Info { …. public: Info(…, Info<S,P>* parentInfo) : …, parentInfo(parentInfo) {} … private: Info<S, P> *parentInfo; }; …. typedef Info<ActualP, ActualS

我正在尝试创建一个类
Info
,它包含指向另一个
Info
类型的对象的指针。我有以下代码

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*parentInfo):…,parentInfo(parentInfo)
{}
…
私人:
信息*家长信息;
};
….
typedef Info OneInfo;
typedef-Info-OtherInfo;
…
OtherInfo*parentInfo=…;
OneInfo信息(…,parentInfo);
这不是编译,也不是说构造函数不是有效的构造函数(在调用时)

我想这会在尝试解析时导致无限递归。我说得对吗?实现从
Info
引用
Info
的意图的替代方案有哪些?

用于引用依赖于模板参数的类型:

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);
}
模板
班级信息
{
公众:
Info():parentInfo(NULL){}
信息(信息*信息):
家长信息(信息)
{
}
私人:
信息*家长信息;
};
国际货币基金组织(国际货币基金组织)
{
家长信息;
信息子项和父项;
}

确切的错误是什么?请将其放在另一个函数中,而不是构造函数中。@user1412084请将包含
候选项的完整错误消息放在原始帖子中。@AtoMerZ谢谢。添加一个set函数来设置它,而不是使用构造函数。但是Info是一个在很多地方实例化的类。将其添加到构造函数中意味着我不会忘记在几个地方设置父级。@user1412084那么您应该在构造函数中使用不同的参数。我猜在你的
Info
课程中有两个字段
S
P
。因此,您应该尝试这样调用构造函数:
Info(S,P)