gpt4 book ai didi

C++循环引用问题

转载 作者:太空宇宙 更新时间:2023-11-04 15:27:59 24 4
gpt4 key购买 nike

我有 2 个类:DataObjectDataElementDataObject 持有指向(仅)DataElement 的指针,而一个 DataElement 包含指向多个类型的指针,其中有一个 DataObject.

这以前没问题,因为我只在 DataElement 中使用指向 DataObject 的指针,所以在DataElement 的 header 就足够了。

但是,现在,我尝试向 DataElement 添加一个析构函数,其中我需要对 DataObject 进行删除。对此,编译器说:

dataelement/destructor.cc: In destructor ‘DataElement::~DataElement()’:
dataelement/destructor.cc:8: warning: possible problem detected in invocation of delete operator:
dataelement/destructor.cc:8: warning: invalid use of incomplete type ‘struct DataObject’
dataelement/dataelement.h:7: warning: forward declaration of ‘struct DataObject’
dataelement/destructor.cc:8: note: neither the destructor nor the class-specific operator delete will be called, even if they are declared when the class is defined.

我该如何解决这个问题?前向声明显然是不够的,而我不能包含 DataObject 的完整 header ,因为这又给了我一个循环依赖。

提前致谢!

最佳答案

在包含两个 header 的 .cpp 文件中定义析构函数。

关于C++循环引用问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4016471/

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