相关疑难解决方法(0)

在C++ 11中构造一个联合元组

元组有点像结构.是否还有像工会一样的元组?或者我可以在元组中访问成员的工会,例如

my_union_tuple<int, char> u;
get<1>(u);
get<int>(u); // C++14 only, or see below
Run Code Online (Sandbox Code Playgroud)

对于第二行,请参见此处.

当然,解决方案不仅适用于特定的联合<int, char>,而且适用于任意类型和数量的类型.

c++ tuples unions c++11

6
推荐指数
1
解决办法
1058
查看次数

枚举结构的成员?

有没有办法枚举C ++或C中的结构(struct |类)的成员?我需要获取成员名称,类型和值。之前,我在一个小型项目中使用了以下示例代码,该项目在全局范围内。我现在遇到的问题是,需要将一组值从GUI复制到对象,文件和VM环境。我可以创建另一个“穷人”的反射系统,或者希望有一个我还没有想到的更好的东西。有人有想法吗?

编辑:我知道C ++没有反射。

union variant_t {
   unsigned int  ui;
   int           i;
   double        d;
   char*         s;
};

struct pub_values_t {
   const char*      name;
   union variant_t* addr;
   char             type;  // 'I' is int; 'U' is unsigned int; 'D' is double; 'S' is string
};

#define pub_v(n,t) #n,(union variant_t*)&n,t
struct pub_values_t pub_values[] = {
   pub_v(somemember,  'D'),
   pub_v(somemember2, 'D'),
   pub_v(somemember3, 'U'),
   ...
};

const int no_of_pub_vs = sizeof(pub_values) / sizeof(struct pub_values_t);
Run Code Online (Sandbox Code Playgroud)

c c++ enumeration

5
推荐指数
1
解决办法
4942
查看次数

模板参数中的循环依赖关系

有人建议在这里使用的元组,而不是所有的公共建筑.我发现它很有用.但我现在的问题是以下部分:

using Edge = std::tuple<Node_wp,//From Node
                        Node_wp>;//To Node
using Edge_wp = std::weak_ptr<Edge>;

using Node = std::tuple<std::vector<Edge_wp>,//Incoming Edges
                        std::vector<Edge_wp>>;//Outgoing Edges
using Node_wp = std::weak_ptr<Node>;
Run Code Online (Sandbox Code Playgroud)

如何克服模板参数中的循环依赖性.由于在不知道类型节点的情况下无法形成类型Edge,因此前向声明(拥有我所拥有的知识)将无法工作,反之亦然.

显然,我可以制作其中之一struct并完成它.但是,在访问中打破对称性将是丑陋的.

c++ templates

4
推荐指数
1
解决办法
115
查看次数

标签 统计

c++ ×3

c ×1

c++11 ×1

enumeration ×1

templates ×1

tuples ×1

unions ×1