【发布时间】:2009-10-12 22:16:34
【问题描述】:
我正在寻找一种在编译时构建字符串数组的简单方法。为了进行测试,我整理了一个名为 Strings 的类,该类具有以下成员:
Strings();
Strings(const Strings& that);
Strings(const char* s1);
Strings& operator=(const char* s1);
Strings& operator,(const char* s2);
使用它,我可以成功编译如下代码:
Strings s;
s="Hello","World!";
s="Hello" 部分调用operator=,它返回一个Strings&,然后operator, 被调用为"World!"。
我无法工作(在 MSVC 中,尚未尝试任何其他编译器)是
Strings s="Hello","World!";
我在这里假设Strings s="Hello" 将调用复制构造函数,然后一切都将与第一个示例相同。但我得到了错误:error C2059: syntax error : 'string'
但是,这很好用:
Strings s="Hello";
所以我知道复制构造函数至少对一个字符串有效。有任何想法吗?我真的很想让第二种方法工作,只是为了让代码更简洁。
【问题讨论】:
-
哇,我听说过很多关于重载逗号运算符的笑话。我从没想过有人会真正做到。
-
@Carl:boost.org/doc/libs/1_40_0/libs/assign/doc/index.html#intro 怎么样(非常像 OP 想要的东西)
-
颤抖 给自己的棺材钉钉子。当它开始出错时,你将如何调试它?
-
@Carl:你是说现在? :)
-
对于可编写脚本的接口,我强烈建议不要使用 C++。您最好选择像 Lua (lua.org) 这样设计 可编写脚本和嵌入的东西。沿着试图使 C++ 更友好的道路前进会导致深渊和黑暗的地方。
标签: c++ overloading comma-operator