具有类型别名的循环依赖项
Circular dependency with type aliases
我有以下代码,其中包含使用 C++using
关键字创建的类型别名,但问题是object
取决于value
,而又取决于object
。由于它是一个类型别名,因此(据我所知(无法对其进行前向声明。
#include <variant>
#include <cstdint>
#include <string>
#include <unordered_map>
using integer = int64_t;
using flt = double;
using string = std::string;
using object = std::unordered_map<std::string, value>;
using value = std::variant<integer, flt, string, object>;
有没有办法对类型别名进行前向声明,以便编译以下代码或任何其他方法来实现我正在尝试执行的操作?
由于它是一个类型别名,因此(据我所知(无法对其进行前向声明。
不,没有办法。没有什么比类型别名的前向声明更像了。
我认为你能得到的最接近的是:
struct object;
struct value;
struct object
{
std::unordered_map<std::string, value*> data;
};
struct value
{
std::variant<integer, flt, string, object> data;
};
或
struct object;
struct value;
struct value
{
std::variant<integer, flt, string, object*> data;
};
struct object
{
std::unordered_map<std::string, value> data;
};
或任何其他方法来实现我想要做的事情?
好吧,您可以使用std::any
:
using object = std::unordered_map<std::string, std::any>;
using value = std::variant<integer, flt, string, object>;
尽管这会使您的代码模式变得困难。
相关文章:
- C++GTKMM gui循环依赖关系
- 如何在头文件中声明类模板(由于循环依赖关系)
- 如何在具有循环依赖的类中dynamic_cast?
- C++模板方法中的循环依赖关系
- 修复循环依赖项 c++17 标头
- 涉及全局对象的循环依赖C++
- 循环依赖,在继承类的情况下使用覆盖方法
- Wt::D bo 中的循环依赖关系
- 在包含窗口标头时难以解决循环依赖关系问题
- 解决循环依赖关系 c++ 的想法
- C++循环依赖关系,未声明的标识符
- C++ 中的循环依赖关系问题
- 错误 C2512 视觉C++(并且不是循环依赖项)
- CMake 外部和内部静态库的循环依赖关系
- 正在从继承中解析循环依赖项
- "std::shared_ptr"循环依赖关系是如何导致问题的
- 纯引用而不是weak_ptr来打破循环依赖关系
- "invalid use of incomplete type" .解决循环依赖关系
- 如何避免模板方法的循环依赖
- 循环依赖结构,使用前向声明时结构的错误重定义