扩展类,委派运算符和作业?

时间:2018-09-12 04:19:23

标签: c++ inheritance boost extending-classes

简而言之……在我的应用中,我们大量使用boost::filesystem::path。多数情况下,它工作得很好,除了有人决定要可爱并在Windows中引用非Unicode文件名外(例如,由于某种原因我无法理解,有人拥有Shift-JIS文件名)。

俗话说,无知是幸福,在我自己,我想我可以通过做一些事情来解决这个问题(这对BTW有意义吗?):

namespace fs = boost::filesystem;

class utf8Path : public fs::path {

    public:
    utf8Path () : fs::path () {};
    utf8Path (std::string path) : fs::path(UnicodeUtil::convertToUTF8(path)) {};
}

当然,我没有考虑所有的各种分配和此类运算符。

假设我上面写的是有道理的,并且代码没有损坏……是否有可能将此方法扩展到其他版本的构造函数,赋值运算符等?

1 个答案:

答案 0 :(得分:0)

当组合同样好或不重写任何虚拟方法时,继承通常是一个错误的设计选择。 在所提供的示例中,几乎没有理由证明新类是合理的。只需在需要的地方调用转换即可,而无需使用“ utf8path”。

尽管我对此并不熟悉,但似乎对codec_cvt有所支持。