像这样的
"xxxx"->foo()
在 cppreference 中,并没有找到相关的用法和解释。
1
Akiyu 2020-07-29 11:14:50 +08:00 1
能提供完整一些的代码么?
"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 1
标准范围内,没想到有什么方法能搞成这样。
|
5
sadwin OP @wutiantong 我也是,找不到任何信息
|
6
wutiantong 2020-07-29 11:56:42 +08:00 1
@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 1
Unified Call Syntax
|
11
limhiaoing 2020-07-29 12:32:47 +08:00 via iPhone 1
没办法发完整的链接
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
哦。这样啊
|