小编Rya*_*yan的帖子

如何使用宏或元编程在C++中创建'passthru'功能?

所以我有一系列全球功能,比如说:

foo_f1(int a, int b, char *c);
foo_f2(int a);
foo_f3(char *a);
Run Code Online (Sandbox Code Playgroud)

我想围绕这些做一个C++包装,比如:

MyFoo::f1(int a, int b, char* c); 
MyFoo::f2(int a);
MyFoo::f3(char* a);
Run Code Online (Sandbox Code Playgroud)

大约有40个这样的函数,其中35个我只想传递给全局函数,另外5个我想做一些与之不同的函数.

理想情况下,MyFoo.cpp的实现类似于:

PASSTHRU( f1, (int a, int b, char *c) );
PASSTHRU( f2, (int a) );

MyFoo::f3(char *a)
{
   //do my own thing here
}
Run Code Online (Sandbox Code Playgroud)

但是我很难找到一种优雅的方法来制作上面的PASSTHRU宏.

我真正需要的是像下面神话般的X getArgs():

MyFoo::f1(int a, int b, char *c)
{
  X args = getArgs();
  args++; //skip past implicit this..
  ::f1(args);  //pass args to global function 
}
Run Code Online (Sandbox Code Playgroud)

但是,如果没有进入汇编,我找不到getArgs()的良好实现.

c++ macros metaprogramming

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

迫使JSON.Net转义正斜杠(solidus)字符的正确方法是什么?

因此,出于商业原因,我需要强制JSON.NET转义JSON blob,如下所示:

{ url: 'http://some.uri/endpoint' }

{ "url": "http:\/\/some.uri\/endpoint" }

也就是说它需要逃避前向斜线的固定字符.我知道 JSON规范不需要这个,而且从技术上讲两者是相同的,但在这种特殊情况下,我需要使用JSON.NET创建完全相同的字符串,因为我从其他地方获取.

强制JSON.NET执行此操作的最佳方法是什么?

创建一个新的JSONConverter子类(例如MyPedanticStringConverter)并使用它是否有意义?

string json = JSONConvert.SerializeObject(
    myObject, 
    Formatting.None, 
    new MyPedanticStringConverter());
Run Code Online (Sandbox Code Playgroud)

escaping json.net

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

标签 统计

c++ ×1

escaping ×1

json.net ×1

macros ×1

metaprogramming ×1