首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C++预处理器和重载问题

C++预处理器和重载问题
EN

Stack Overflow用户
提问于 2011-02-08 04:53:24
回答 4查看 397关注 0票数 0

我有以下问题:

让我们考虑一下我们有

代码语言:javascript
复制
#define SET callMe
#define COLUMN(x) #x

在我们程序的主要代码块中,我们有以下代码行:SET(COLUMN(price)="hi");,在预处理器运行后,它被转换为:

代码语言:javascript
复制
#callMe("price"="hi"); 

我需要函数callMe签名为callMe(string str),这样我们就不得不制作一些东西来将"price"="hi"转换为"price=hi",并让callMe函数来处理其余的问题。最后要说明的是,我描述的所有程序都是Table类的一部分。

我唯一的选择是重载操作符=,以便将"price"="hi"转换为所需的操作符,但我无法获得应该重载的内容,因为我首先想到的是执行以下重载

#std::string operator=(std::string str)作为Table类的成员函数,但我似乎不能让它走上正轨。

有什么线索能让我实现想要的操作吗?

EN

Stack Overflow用户

回答已采纳

发布于 2011-02-08 05:18:58

这对你有好处吗?

代码语言:javascript
复制
#define SECOND_PASS(x) callMe(#x)
#define COLUMN(x) x
#define SET(x) SECOND_PASS(x)

这会导致:

代码语言:javascript
复制
callMe("price=\"hi\"");

这实际上是让预处理器在转换为字符串之前删除列。

票数 3
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4926435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档