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)
。