gpt4 book ai didi

C++。 Child 继承自 Parent 并作为 Parent 属性包含在内

转载 作者:行者123 更新时间:2023-11-30 02:04:47 25 4
gpt4 key购买 nike

我有一个非常简单的父子关系,其中 OlderSon 继承自 Parent,Parent 有一个指向他的 OlderSon 的指针,例如:

#ifndef PARENT_HXX
#define PARENT_HXX

#include <iostream>
#include <string>
//#include "OlderSon.hxx"

class OlderSon;

class Parent
{
private :
OlderSon* _os;
public :
int _age;
std::string _name;

Parent(){
_name="parent name";
_age=60;
//OlderSon* _os=new OlderSon();
}
};

#endif //PARENT_HXX

和儿子:

#ifndef OLDERSON_HXX
#define OLDERSON_HXX

#include <iostream>
#include <string>
#include "Parent.hxx"


class OlderSon: public Parent
{
public:
OlderSon(){
_age=25;
_name="Olderson name";
}


};

#endif //OLDERSON_HXX

但是,每当我尝试取消注释初始化指针的行 OlderSon* _os=new OlderSon(); 时,我都会收到一条错误消息:

Parent.hxx: In constructor ‘Parent::Parent()’:
Parent.hxx:25:31: error: invalid use of incomplete type ‘struct OlderSon’
Parent.hxx:8:7: error: forward declaration of ‘struct OlderSon’

我尝试了不同的方式,即包括 .hxx 或通过前向声明,但似乎没有任何帮助。我想这不是一个非常复杂的问题,但它开始令人沮丧。
有什么想法吗?
提前致谢!

最佳答案

您正在尝试不可能的事情。您可以通过将 Parent:Parent 的实现移动到实现文件来修复该错误,但您的代码仍然是灾难性的。

构建一个 Parent 需要构建一个 OlderSon,而构建一个 OlderSon 也需要构建一个 Parent(因为 OlderSon 一个 Parent)。你会有无限递归。

你不能同时让 Parent 的构造函数调用 OlderSon 的,反之亦然!

关于C++。 Child 继承自 Parent 并作为 Parent 属性包含在内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10189331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com