小编Sna*_*rTT的帖子

C ++自动将类成员公开给多个API

简短:那里有许多聪明的库,可让您出于各种目的公开类的成员,例如序列化,暴露于lua环境等。问题是,对于每个聪明的解决方案,您都必须注册一个类的东西对于每个api,都会导致大量工作重复和重复。

什么是办法,我可以注册一个类及其成员和方法ONCE有某种附加标志,并获得各种自动生成的方法

龙:可以说我有一堂课:

class C {
public:
    int i;  // Some int
    vec3 v; // Some non-POD value
    int function(int foo, char bar) // Some function
    int hidden; // Some internal stuff I don't want exposed
        }
Run Code Online (Sandbox Code Playgroud)

我想做的是能够在声明时标记各种成员和方法,以将它们自动放入各种样板中:

所以声明可能看起来像:

class C {
public:
    LUAREG JSON BINSER int i; // Marks member "i" to be exposed to the lua enviroment,
                              // JSON serialisable, binary serialisable
    JSON vec3 v; // Only exposed to JSON function

    LUAREG void someFunction() {} // …
Run Code Online (Sandbox Code Playgroud)

c++ boilerplate

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

GDB/C++ - 回溯时如何隐藏常量静态字段?

我正在使用 gdb 调试 C++ 代码。有些东西正在摇晃,所以我点击“backtrace full”进行检查。不幸的是,一些成员变量是包含const static字段的类的实例。有很多const static领域。此外,这些const static字段本身就是所述类的实例:

class foo {
public:
   int val;
   foo(int _val) : val(_val) {}

   static const foo FOO_5 = foo(5);
   static const foo FOO_6 = foo(6);
   static const foo FOO_7 = foo(7);
   ...
   }
Run Code Online (Sandbox Code Playgroud)

(我真正的代码是一个字体格式化类,带有粗体、斜体、黑色、红色等预设)

结果是 gdb 感觉需要吐出const static所述类的每个成员的每个字段(以及每个成员的每个成员等)。这会导致许多屏幕上充满相同的内容const static这会导致许多屏幕上显示

gdb 文本墙:

 mItems = std::vector of length 0, capacity 0, activeFormat = {
            _vptr.sttfont_format = 0x555555590898 <vtable for sttfont_format+16>, r = 255 '\377', g …
Run Code Online (Sandbox Code Playgroud)

c++ gdb

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

标签 统计

c++ ×2

boilerplate ×1

gdb ×1