std::unordered_map 类型对象声明期间出现"field has incomplete type"错误



我只是想创建以下类:

class model
{
public:
.
.
.
unordered_map<string, material> materials;
.
.
.
}

注释后,此行程序编译成功。取消注释后产生以下错误:

In file included from glmw1.cpp:1:
In file included from ./global.hpp:3:
In file included from /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../include/c++/9.2.0/x86_64-pc-linux-gnu/bits/stdc++.h:54:
In file included from /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../include/c++/9.2.0/ccomplex:39:
In file included from /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../include/c++/9.2.0/complex:45:
In file included from /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../include/c++/9.2.0/sstream:38:
In file included from /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../include/c++/9.2.0/istream:38:
In file included from /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../include/c++/9.2.0/ios:40:
In file included from /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../include/c++/9.2.0/bits/char_traits.h:39:
In file included from /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../include/c++/9.2.0/bits/stl_algobase.h:64:
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../include/c++/9.2.0/bits/stl_pair.h:215:11: error: field has incomplete type 'material'
_T2 second;                /// @c second is a copy of the second object
.
.
.

材料只是普通类。我还在我的程序中声明了一些"model"类型的对象(如果它有所作为(

您需要提供物质对象的定义才能获得它们的集合,您不能只是转发声明它们。编译器需要知道要为它们使用多少内存等。

相关内容

最新更新