我有一个Directory
类,用于存储字符串并且有一个/
运算符,因此a / b
a
是Directory
和{{1} } b
会将std::string
和"/"
添加到b
中存储的字符串中,如下所示:
a
这将Directory a("/home/joe/foo");
Directory b = a / "bar";
存储字符串b
。这实际上是可用的,还是只是不必要的幻想?
答案 0 :(得分:4)
Boost Filesystem以类似的方式重载了operator /。在你走得太远之前你有没有检查过boost文件系统? http://www.boost.org/doc/libs/1_53_0/libs/filesystem/doc/index.htm
答案 1 :(得分:2)
这是一个坏主意,因为你正在改变/运算符的通用含义。
答案 2 :(得分:0)
以这种方式重载运算符是......奇怪的。我不会说它的可怕或不好,但你必须记住,在大多数情况下,operator/
更像是在说“按此划分”。现在,您可以自由地将运算符重载到您想要的任何内容,但字符串的约定(可以表示目录)通常会使+
之类的内容重载。
当我第一次遇到这个代码时,我感到奇怪的是你试图用其他东西划分目录。这真的令人困惑,也不太清楚。 +
可能是更好的选择,或者只使用Append
或Combine
等明确的方法名称。
答案 3 :(得分:0)
我不认为这是一个好主意,因为它不符合常识。 在书中,它提供了运算符重载的规则: 不要使具有内置含义的运算符过载