相关疑难解决方法(0)

如何将反射添加到C++应用程序?

我希望能够内省一个C++类的名称,内容(即成员及其类型)等.我在这里说的是原生C++,而不是托管C++,它有反射.我意识到C++使用RTTI提供一些有限的信息.哪些额外的库(或其他技术)可以提供此信息?

c++ reflection templates sfinae

242
推荐指数
19
解决办法
19万
查看次数

打印C++结构中所有字段的值

考虑一个简单的结构:

struct abc  
{  
    int a;  
    char b;  
}  
Run Code Online (Sandbox Code Playgroud)

我在一个定义为其结构的变量中得到了一些值,现在我想打印下面的内容.

*a = [some value]  
b = [some character]*
Run Code Online (Sandbox Code Playgroud)

对于任意结构实现此目的的最佳方法是什么,而不必为我遇到的每个结构编写dump ...(...)函数?

c++ structure visual-c++

20
推荐指数
2
解决办法
3万
查看次数

C++的属性和反射库?

大多数成熟的C++项目似乎都有自己的反射和属性系统,即用于定义可以通过字符串访问的属性并且可以自动序列化.我参与的至少很多C++项目似乎重新发明了轮子.

你知道任何支持反射和属性容器的C++ 开源库,特别是:

  • 通过宏定义RTTI和属性
  • 通过代码访问RTTI和属性
  • 自动序列化属性
  • 听取属性修改(例如OnValueChanged)

c++ reflection attributes

16
推荐指数
3
解决办法
7955
查看次数

迭代结构; 在RichEdit框中轻松显示结构字段和值

是否有更简单的方法来显示控件中的struct字段及其对应的值RichEdit

这就是我现在正在做的事情:

AnsiString s;

s = IntToStr(wfc.fontColor);
RichEdit1->Lines->Append(s);
Run Code Online (Sandbox Code Playgroud)

等等...

有没有比单独呼叫每个人更简单的方法?我想读取一个二进制文件,然后在RichEdit我正在构建的小实用程序的控件中显示相应的结构,并且没有找到其他方法.我知道如何读取二进制文件并将值读入struct已经存在的文件中.

c++ user-interface struct richedit c++builder-5

12
推荐指数
3
解决办法
1万
查看次数

C++:迭代所有对象的成员?

假设我有一个包含许多成员的对象:

class Example {
    AnotherClass member1;
    AnotherClass member2;
    YetAnotherClass member3;
    ...
};
Run Code Online (Sandbox Code Playgroud)

是否有简短的方法来做类似的事情:

foreach(member m: myExample)
    m.sharedMethod();
Run Code Online (Sandbox Code Playgroud)

而不是单独访问每一个?

我想我可以将它们放在一个向量中并使用一个shared_ptr相同的效果,我只是想知道是否说,Boost或其他一些流行的库没有自动执行此操作.

c++ boost

7
推荐指数
2
解决办法
6471
查看次数

是否有可能从适应的结构生成融合图?

让我们A:

struct A {
  int a;
  std::string b;
  struct keys {
    struct a;
    struct b;
  };
};
Run Code Online (Sandbox Code Playgroud)

我想fusion::map从结构中生成一个它包含fusion::pairs:fusion::pair<A::keys::a, int>fusion::pair<A::keys::b, std::string>.就像是

A a;
fusion::make_map<A>(a)
Run Code Online (Sandbox Code Playgroud)

我试过了 BOOST_FUSION_ADAPT_ASSOC_STRUCT

BOOST_FUSION_ADAPT_ASSOC_STRUCT(
    A,
    (int,  a, A::keys::a)
    (std::string, b, A::keys::b)
Run Code Online (Sandbox Code Playgroud)

)

这使A适合用作关联序列,但我还没有找到从中构造地图的方法.特别是,如果我迭代它,我只得到值.如果我可以迭代那些真正有用的键,因为那时我可以压缩值和键来构建一个映射,但我还没有找到一种方法来做到这一点.

c++ boost-fusion

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

从C++中的POD结构获取可用数据成员的列表

这个问题听起来有点不同寻常.我们来看一个POD结构:

struct MyStruct
{
   int myInt;
   double myDouble;
   AnotherPOD* myPointer;
};
Run Code Online (Sandbox Code Playgroud)

编译器知道可用数据成员的列表.您是否知道在编译时(更好)或运行时获取数据成员名称列表(和类型)的方法?

我有大量的POD结构,我想自动创建operator <<.

我知道我可以为头文件创建一个解析器,创建一些文件并编译它们.但是,我确信编译器已经有了这些信息,我想利用它.

有任何想法吗?

谢谢

c++

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