当我编译包含可选类型的二叉树时:
#include <optional>
class BinaryTree
{
public:
BinaryTree();
int value;
std::optional<BinaryTree> left,right;
};
int main()
{
return 0;
}
via
g++ -std=c++17 -Wfatal-errors main.cpp
我面临这个错误
In file included from /usr/include/c++/7/bits/move.h:54:0,
from /usr/include/c++/7/bits/stl_pair.h:59,
from /usr/include/c++/7/utility:70,
from /usr/include/c++/7/optional:36,
from main.cpp:1:
/usr/include/c++/7/type_traits: In instantiation of ‘struct std::is_trivially_copy_constructible<BinaryTree>’:
/usr/include/c++/7/optional:103:8: required from ‘class std::_Optional_base<BinaryTree>’
/usr/include/c++/7/optional:451:11: required from ‘class std::optional<BinaryTree>’
main.cpp:8:28: required from here
/usr/include/c++/7/type_traits:1409:12: error: invalid use of incomplete type ‘class BinaryTree’
struct is_trivially_copy_constructible
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated due to -Wfatal-errors.
我应该如何修复这个错误?
可选包含参与时类型的完整实例。
在一个类型的实例中存储该类型的两个实例是不可能的;它需要 2
考虑使用指向类型的唯一指针而不是可选指针。
如果您希望能够复制树,那么您必须编写一个值指针。值指针是一个知道如何深度复制自身的指针。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)