
像这样的
"xxxx"->foo() 在 cppreference 中,并没有找到相关的用法和解释。
1 Akiyu 2020-07-29 11:14:50 +08:00 能提供完整一些的代码么? "xxxx"->foo() 这样的形式要求 "xxxx" 是一个可调用对象, 并且是指针类型. 比如 A* 有方法可以做到这样. 能提供详细一些的信息么? 比如 foo 是什么样的函数. 成员 or 普通函数. 等等 |
2 sadwin OP google 到现在,连沾点关系的问题都没找到。 难道是编译器扩展? 或者是公司代码编译之前会做 sed 把字面值给替换了? |
3 sadwin OP @Akiyu 公司代码,不方便贴出来,但是形式是很简单的一句, `if ("xxxx"->foo()) ...` 这样的。 因为是服务端同事在群里发的代码截图,偶然看到了这么一句。 发现自己写 c++也有几年了,却从没发现这种用法...... |
4 wutiantong 2020-07-29 11:41:21 +08:00 标准范围内,没想到有什么方法能搞成这样。 |
5 sadwin OP @wutiantong 我也是,找不到任何信息 |
6 wutiantong 2020-07-29 11:56:42 +08:00 nbsp; @sadwin operator -> 要求前面是个 class type, operator -> 的重载也只有 inner 形式,没有 outer 形式, user-defined literal 则必须要有个 suffix, 看起来没有别的可能了。 |
7 sadwin OP @wutiantong 也就是说除了魔改编译器或者编译前预处理,没有别的办法了对吧? |
8 AlohaV2 2020-07-29 12:09:03 +08:00 via iPhone 搜一搜有没有奇怪的宏 |
9 optional 2020-07-29 12:14:00 +08:00 via iPhone #define ? |
10 limhiaoing 2020-07-29 12:30:22 +08:00 via iPhone Unified Call Syntax |
11 limhiaoing 2020-07-29 12:32:47 +08:00 via iPhone 没办法发完整的链接 jtc1/sc22/wg21/docs/papers/2015/n4474.pdf |
12 whi147 2020-07-29 17:16:48 +08:00 via iPhone qt 中用过,在其他地方将指针包装成 string,抛到全局,需要用的地方,找到 string 指的地址转成指针。说白了就是地址位置传递。 |
13 whi147 2020-07-29 17:19:41 +08:00 via iPhone qt 的全局指针是 qApp,通过这个来传递的。 |
15 whi147 2020-08-03 11:46:47 +08:00 via iPhone 可是你写的是 char[] |
16 sadwin OP @whi147 可能是我表述不清楚,我看到的代码并不是这样的: ``` c++ char *foo = "something"; ... foo->bar(); ``` 而是直接: ``` c++ "zhangsan"->bar(); ``` 这样子的。 和你说的情景应该不是同一个。 最有可能的做法没准就是按照 11 楼来的。要么就是预处理 |
17 sadwin OP 啊,我擦,回帖不能用 markdown 吗... |
18 whi147 2020-08-04 12:14:13 +08:00 via iPhone 哦。这样啊 |