C++:在嵌套名称说明符中命名的不完整类型
C++: incomplete type named in nested name specifier
我正在尝试解决我的c ++项目中的循环依赖关系,并根据StackOverflow上的其他答案,我遵循了相同的方法。但是,我仍然看到一个问题:
这是我下面的代码片段:
// In ip6.hh
namespace net
{
class Inet4;
/** IP6 layer */
class IP6
{
using Stack = class Inet4;
void set_packet_forwarding(Stack::Forward_delg fwd)
{ forward_packet_ = fwd; }
Stack& stack_;
}
}
// In Inet4.hpp
#include "ip6/ip6.hpp"
namespace net {
class Inet4 : public Inet<IP4>{
IP6& ip_obj()
{ return ip6_; }
IP6 ip6_;
}
}
在主要.cpp中,我将其包括如下:
#include <net/ip6/ip6.hpp>
#include <net/inet4.hpp>
> /home/nikhil/projects/ipv6/IncludeOS/api/net/ip6/ip6.hpp:84:32: error: > incomplete type 'net::Inet4' named in nested name specifier > void set_packet_forwarding(Stack::Forward_delg fwd) > ^~~~~~~ /home/nikhil/projects/ipv6/IncludeOS/api/net/ip6/ip6.hpp:35:9: note: > forward declaration of 'net::Inet4' class Inet4;
只有Inet贴花(不是定义(。编译器不知道 Inet4 的定义(因此 Stack 被归为 Inet4(。
相关文章:
- 缺少类型说明符,显式类型为"缺少错误"
- 与 tesseract::TessBaseApi() 相关的 Tesseract-OCR 出错(预期的类型说明符)
- 为什么转换函数声明不需要至少一个定义类型说明符
- C++需要所有声明的类型说明符和预期的非限定 id(需要调试帮助)
- printf 数据类型说明符复杂问题
- C++错误:"class name"之前的预期类型说明符
- 缺少类型说明符和另一个问题
- 缺少类型说明符 - 假定为 int.注意 c++ 不支持 default-int
- 错误:C4430:缺少类型说明符-假定为int.注意:C++不支持default-int
- 在C++中出现错误之前,无效使用了不完整的类型和所需的类型说明符
- 缺少类型说明符 - int 假定 声明静态成员后出错
- 不能在类型说明符中定义联合
- 没有带有字符串数组的存储类或类型说明符
- 警告:函数使用不带尾随返回类型的'auto'类型说明符
- 仅为某些模板专用化定义转换运算符:预期类型/预期类型说明符
- 在 C++ 中出现unique_ptr错误之前的预期类型说明符
- 有没有办法将类型说明符存储在变量中
- C 期望类对象的类型说明符
- 是无符号的int"简单类型说明符"
- 在 vscode 上编译错误.类型说明符是 C++11 扩展